content: -----------------------------------------------------------------------------
  -- |
  -- Module    : BenchSuite.Puzzles.Sudoku
  -- Copyright : (c) Jeffrey Young
  --                 Levent Erkok
  -- License   : BSD3
  -- Maintainer: erkokl@gmail.com
  -- Stability : experimental
  --
  -- Bench suite for Documentation.SBV.Examples.Puzzles.Sudoku
  -----------------------------------------------------------------------------
  
  {-# OPTIONS_GHC -Wall -Werror #-}
  
  module BenchSuite.Puzzles.Sudoku(benchmarks) where
  
  import Documentation.SBV.Examples.Puzzles.Sudoku
  
  import Utils.SBVBenchFramework
  import BenchSuite.Bench.Bench as S
  
  import Data.Maybe (fromMaybe)
  
  
  -- benchmark suite
  benchmarks :: Runner
  benchmarks = rGroup
      [ runIO ("sudoku" ++ show n) (checkPuzzle s)
      | (n, s) <- zip [(0::Int)..] [puzzle1, puzzle2, puzzle3, puzzle4, puzzle5, puzzle6] ]
  
  
  checkPuzzle :: Puzzle -> IO Bool
  checkPuzzle p = do final <- fillBoard p
                     let vld = valid (map (map literal) final)
                     pure $ fromMaybe False (unliteral vld)
  