summaryrefslogtreecommitdiff
path: root/src/MyQueens.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/MyQueens.hs')
-rw-r--r--src/MyQueens.hs6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/MyQueens.hs b/src/MyQueens.hs
index bc7da02..a3c5e0b 100644
--- a/src/MyQueens.hs
+++ b/src/MyQueens.hs
@@ -21,7 +21,7 @@ allOptionsBoard = take 8 $ repeat allOptionsColumn
21 21
22select :: Board -> [Board] 22select :: Board -> [Board]
23select (x@(RankChoice _):xs) = map (x:) (select xs) 23select (x@(RankChoice _):xs) = map (x:) (select xs)
24select ((RankOptions rs):xs) = dropHopeless $ map (\r -> (RankChoice r):(restrict xs r)) rs 24select ((RankOptions rs):xs) = dropHopeless $ map (restrict xs) rs
25select [] = error "select on invalid board" 25select [] = error "select on invalid board"
26 26
27dropHopeless :: [Board] -> [Board] 27dropHopeless :: [Board] -> [Board]
@@ -36,7 +36,7 @@ filterRankOptions f (RankOptions rs) = RankOptions (filter f rs)
36filterRankOptions _ x = x 36filterRankOptions _ x = x
37 37
38restrict :: PartialBoard -> Rank -> PartialBoard 38restrict :: PartialBoard -> Rank -> PartialBoard
39restrict rs r = 39restrict rs r = ((RankChoice r) :) $
40 (dropDiagonal pred minBound r) . 40 (dropDiagonal pred minBound r) .
41 (dropDiagonal succ maxBound r) . 41 (dropDiagonal succ maxBound r) .
42 (map (filterRankOptions (/= r))) $ 42 (map (filterRankOptions (/= r))) $
@@ -51,7 +51,7 @@ select' :: [Board] -> [Board]
51select' = concatMap select 51select' = concatMap select
52 52
53queens :: [Board] 53queens :: [Board]
54queens = select' . select' . select' . select' . select' . select' . select' . select' $ [allOptionsBoard] 54queens = foldl1 (.) (take 8 $ repeat select') $ [allOptionsBoard]
55 55
56main :: IO () 56main :: IO ()
57main = do 57main = do