A small haskell script to solve sudoku puzzles
git clone https://github.com/m-col/sudoku-solver
Files | Refs | Readme

Commit 0c20fdfb430f39832bb5f9c90183b2d264fdbe1f
Parent: 65107cf632cd3881fc1687dbc85fa2ff03e24275
Author: mcol <mcol@posteo.net>
Date: 2022-04-03 18:10:41 +0100
Committer: mcol <mcol@posteo.net>
Committed: 2022-04-03 18:10:41 +0100

clean printing a bit

sudoku.hs Modified

@@ -11,7 +11,7 @@
 import Data.Bool (bool)
 import Data.Char (digitToInt)
 import Data.List (nub, sort)
-import Data.Maybe (catMaybes, fromMaybe, isJust, listToMaybe, mapMaybe)
+import Data.Maybe (catMaybes, fromMaybe, isJust, isNothing, listToMaybe, mapMaybe)
 import System.Environment (getArgs)
 
 {-
@@ -57,7 +57,7 @@
     makeBox (r, c) = [(r, c) | r <- [r .. succ . succ $ r], c <- [c .. succ . succ $ c]]
 
 {-
-Solve the given puzzle!
+Solve the puzzle!
 -}
 solve :: Puzzle -> Maybe Puzzle
 solve p = go [(p, (One, One))] (Just (One, One))
@@ -125,14 +125,9 @@
 main :: IO ()
 main = do
     args <- getArgs
-    contents <- readFile $ bool (head args) "puzzle_1.txt" (null args)
-    let puzzle = loadPuzzle contents
-    putStrLn "Puzzle:"
-    putStrLn . showPuzzle $ puzzle
-
-    case solve puzzle of
-        Nothing ->
-            putStrLn "Failed! Is the puzzle valid?"
-        Just solved -> do
-            putStrLn "Completed:"
-            putStrLn . showPuzzle $ solved
+    let file = bool (head args) "puzzle_1.txt" (null args)
+    solved <- solve . loadPuzzle <$> readFile file
+    putStrLn $
+        if isNothing solved
+            then "Failed! Is the puzzle valid?"
+            else "Completed!"