packages feed

LogicGrowsOnTrees-1.0.0: examples/print-an-nqueens-solution.hs

{-# LANGUAGE UnicodeSyntax #-}

import Data.List (sort)

import System.Console.CmdTheLine

import LogicGrowsOnTrees.Checkpoint (Progress(..))
import LogicGrowsOnTrees.Parallel.Main
import LogicGrowsOnTrees.Parallel.Adapter.Threads

import LogicGrowsOnTrees.Examples.Queens

main =
    mainForExploreTreeUntilFirst
        driver
        (makeBoardSizeTermAtPosition 0)
        (defTI { termDoc = "print an n-queens solutions for a given board size" })
        (\_ (RunOutcome _ termination_reason) → do
            case termination_reason of
                Aborted _ → error "search aborted"
                Completed Nothing → putStrLn "No solution found."
                Completed (Just (Progress _ result)) → print (sort result)
                Failure _ message → error $ "error: " ++ message
        )
        nqueensSolutions