import GHC.Conc (setNumCapabilities)
import LogicGrowsOnTrees.Parallel.Adapter.Threads
(RunOutcome(..)
,TerminationReason(..)
,exploreTreeUntilFoundUsingPush
,setNumberOfWorkers
)
import LogicGrowsOnTrees.Checkpoint (Progress(..))
import LogicGrowsOnTrees.Examples.Queens (nqueensUsingBitsSolutions)
main = do
setNumCapabilities 2
RunOutcome statistics termination_reason <-
exploreTreeUntilFoundUsingPush
((>= 5) . length)
(setNumberOfWorkers 2)
.
fmap (:[])
.
nqueensUsingBitsSolutions
$
10
case termination_reason of
Aborted _ -> putStrLn "Search aborted."
Completed (Left results) -> putStrLn $ "Only found:" ++ show results
Completed (Right (Progress checkpoint results)) -> putStrLn $ "Found: " ++ show results
Failure _ message -> putStrLn $ "Failed: " ++ message