diff options
Diffstat (limited to 'comparison/Haskell/nqueen-12.hs')
| -rw-r--r-- | comparison/Haskell/nqueen-12.hs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/comparison/Haskell/nqueen-12.hs b/comparison/Haskell/nqueen-12.hs new file mode 100644 index 0000000..1efb57b --- /dev/null +++ b/comparison/Haskell/nqueen-12.hs @@ -0,0 +1,21 @@ +member x [] = False +member x (y:ys) + | x==y = True + | otherwise = member x ys + +threat k m [] = False +threat k m (x:xs) + | (k == x-m) || (k == m-x) = True + | otherwise = threat (k+1) m xs + + +queen1 0 b n = [] +queen1 m b n + | (member m b) || (threat 1 m b) = (queen1 (m-1) b n) + | (length b) == (n-1) = [m:b] ++ (queen1 (m-1) b n) + | otherwise = (queen1 n (m:b) n) ++ (queen1 (m-1) b n) + +queen n = queen1 n [] n + +n=12 +main = print $ (length (queen n)) |
