summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2022-03-27 19:39:58 +0200
committerThomas White <taw@physics.org>2022-03-27 19:39:58 +0200
commit106e978231a2be2e160fc380ae2e75a4acd58b23 (patch)
tree4e9e490fda51b60de781f86e6e73d408b45cc8cb
parent15079ef823be474482ac7042780da43150cb58d4 (diff)
Test data
-rw-r--r--sudoku.scm38
1 files changed, 38 insertions, 0 deletions
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))