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))
|