Skip to content

Instantly share code, notes, and snippets.

@junjihashimoto
Created March 22, 2014 16:20
Show Gist options
  • Select an option

  • Save junjihashimoto/9709721 to your computer and use it in GitHub Desktop.

Select an option

Save junjihashimoto/9709721 to your computer and use it in GitHub Desktop.
8queen solver
dat' n =replicate n [0..(n-1)]
qvalid=all (\v -> case v of
[] -> False
_ -> True)
qdrop:: Int->[[Int]]->[[Int]]
qdrop pos board=
let b=zip [1..] board
f d p=not (abs (pos-p)==d || pos==p )
in map (\(d,p) -> filter (f d) p) b
queen []=[]
queen [x]=[x]
queen (x:xs)=
let b' = map (\v -> (v,qdrop v xs)) x
b'' = filter (\(_,y) -> qvalid y) b'
m = map (\(v,b) -> map (\c->v:c) (queen b)) b''
in foldl (++) [] m
main=do
print $ length $ queen $ dat' 1
print $ length $ queen $ dat' 2
print $ length $ queen $ dat' 3
print $ length $ queen $ dat' 4
print $ length $ queen $ dat' 5
print $ length $ queen $ dat' 6
print $ length $ queen $ dat' 7
print $ length $ queen $ dat' 8
print $ length $ queen $ dat' 9
print $ length $ queen $ dat' 10
print $ length $ queen $ dat' 11
print $ length $ queen $ dat' 12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment