LogicGrowsOnTrees-1.0.0: examples/print-all-nqueens-solutions.hs
{-# LANGUAGE UnicodeSyntax #-}
import System.Console.CmdTheLine
import qualified Data.Foldable as Fold
import Data.List (sort)
import qualified Data.Sequence as Seq
import LogicGrowsOnTrees.Parallel.Main
import LogicGrowsOnTrees.Parallel.Adapter.Threads
import LogicGrowsOnTrees.Examples.Queens
main =
mainForExploreTree
driver
(makeBoardSizeTermAtPosition 0)
(defTI { termDoc = "print all the n-queens solutions for a given board size" })
(\_ (RunOutcome _ termination_reason) → do
case termination_reason of
Aborted _ → error "search aborted"
Completed solutions → Fold.mapM_ print . Seq.unstableSort $ solutions
Failure _ message → error $ "error: " ++ message
)
(fmap (Seq.singleton . sort) . nqueensSolutions)