From 106e978231a2be2e160fc380ae2e75a4acd58b23 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sun, 27 Mar 2022 19:39:58 +0200 Subject: Test data --- sudoku.scm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/sudoku.scm b/sudoku.scm index 7b1743c..965e8d2 100644 --- a/sudoku.scm +++ b/sudoku.scm @@ -16,6 +16,15 @@ (iota board-size)))) +(define (set-initial-value board col row val) + (add-clause + (list + (array-ref board + col + row + (1- val))))) + + (let ((board (make-array #f board-size board-size @@ -64,6 +73,35 @@ (array-ref board col row value)) (iota board-size))))) + ;; Initially specified values + (set-initial-value board 0 0 4) + (set-initial-value board 0 7 5) + (set-initial-value board 0 8 1) + + (set-initial-value board 1 1 3) + (set-initial-value board 1 3 2) + + (set-initial-value board 2 8 4) + + (set-initial-value board 3 2 7) + (set-initial-value board 3 6 6) + (set-initial-value board 3 7 2) + + (set-initial-value board 4 4 8) + (set-initial-value board 4 5 1) + + (set-initial-value board 5 6 3) + + (set-initial-value board 6 0 8) + (set-initial-value board 6 4 4) + + (set-initial-value board 7 3 6) + (set-initial-value board 7 6 7) + + (set-initial-value board 8 0 5) + + + (let ((vals (solve-sat))) (do ((row 0 (1+ row))) ((= row board-size)) (do ((col 0 (1+ col))) ((= col board-size)) -- cgit v1.2.3