aboutsummaryrefslogtreecommitdiff
path: root/comparison/Haskell/nqueen-12.hs
blob: 1efb57b10570e200ab4d3b6d4e3e02001ca0a016 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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))