Download code
From LiteratePrograms
Back to Eight_Queens_puzzle_(Haskell)
Download for Windows: zip
Download for UNIX: zip, tar.gz, tar.bz2
queens
queens :: Int -> [[Int]]
queens n = foldM f [] [1..n] where
f rows _ = [row : rows |
row <- [1..n],
safeAddition rows row 1]
safeAddition
safeAddition :: [Int] -> Int -> Int -> Bool safeAddition [] _ _ = True safeAddition (r:rows) row i = row /= r && abs (row - r) /= i && safeAddition rows row (i + 1)
