import Control.Monad (forever)
import Control.Monad.IO.Class (liftIO)
import System.IO (hFlush,stdout)
import LogicGrowsOnTrees.Parallel.Adapter.Threads
(RunOutcome(..)
,TerminationReason(..)
,exploreTree
,setNumberOfWorkers
)
import LogicGrowsOnTrees.Utils.WordSum (WordSum(..))
import LogicGrowsOnTrees.Examples.Queens (nqueensUsingBitsSolutions)
main = do
RunOutcome _ termination_reason <-
exploreTree (forever $
liftIO (do
putStr "Enter the desired number of workers: "
hFlush stdout
readLn
)
>>=
setNumberOfWorkers
)
.
fmap (const $ WordSum 1)
.
nqueensUsingBitsSolutions
$
14
case termination_reason of
Aborted progress -> putStrLn "Count aborted."
Completed (WordSum count) -> putStrLn $ "Found " ++ show count ++ " solutions."
Failure _ message -> putStrLn $ "Failed: " ++ message