fork download
  1. import Data.List
  2. import Control.Applicative
  3.  
  4. data Osoba = Mąż Int | Żona Int deriving (Show)
  5.  
  6. konfiguracje :: Int -> [[Osoba]]
  7. konfiguracje n = filter (\xs -> all warunek (zip xs (tail xs))) wszystkie
  8. where wszystkie = permutations ([ Mąż, Żona ] <*> [1..n])
  9. warunek (Mąż n, Żona m) = n /= m
  10. warunek (Żona n, Mąż m) = n /= m
  11. warunek _ = True
  12.  
  13. main = print (map (length . konfiguracje) [1..5])
Success #stdin #stdout 1.45s 7248KB
stdin
Standard input is empty
stdout
[0,8,240,13824,1263360]