import System.Console.CmdTheLine (PosInfo(..),TermInfo(..),defTI,pos,posInfo,required) import LogicGrowsOnTrees.Parallel.Adapter.Threads (driver) import LogicGrowsOnTrees.Parallel.Main (RunOutcome(..),TerminationReason(..),mainForExploreTree) import LogicGrowsOnTrees.Utils.WordSum (WordSum(..)) import LogicGrowsOnTrees.Examples.Queens (nqueensUsingBitsSolutions) main = mainForExploreTree driver (required $ pos 0 (Nothing :: Maybe Int) posInfo { posName = "BOARD_SIZE" , posDoc = "the size of the board" } ) (defTI { termName = "tutorial-11" , termDoc = "count the number of n-queens solutions for a given board size" } ) (\board_size (RunOutcome _ termination_reason) -> do case termination_reason of Aborted _ -> error "search aborted" Completed (WordSum count) -> putStrLn $ show count ++ " solutions found for board size " ++ show board_size Failure _ message -> error $ "error: " ++ message ) (fmap (const $ WordSum 1) . nqueensUsingBitsSolutions . fromIntegral)