diff options
Diffstat (limited to 'sudoku.scm')
-rw-r--r-- | sudoku.scm | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -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)) |