RosettaCodeData/Task/N-queens-problem/Haskell/n-queens-problem-2.hs

12 lines
295 B
Haskell
Raw Permalink Normal View History

2013-06-05 21:47:54 +00:00
import Control.Monad (foldM)
import Data.List ((\\))
main :: IO ()
main = mapM_ print $ queens 8
queens :: Int -> [[Int]]
queens n = foldM f [] [1..n]
where
2015-02-20 00:35:01 -05:00
f qs _ = [q:qs | q <- [1..n] \\ qs, q `notDiag` qs]
2013-06-05 21:47:54 +00:00
q `notDiag` qs = and [abs (q - qi) /= i | (qi,i) <- qs `zip` [1..]]