No description
Find a file
2010-07-24 14:17:10 +01:00
src/ray1729/clojure/sudoku A working implementation of elimination/trial and error solver 2010-07-24 14:16:52 +01:00
test/ray1729/clojure/sudoku Initial check-in 2010-07-24 12:39:47 +01:00
.gitignore Initial check-in 2010-07-24 12:39:47 +01:00
project.clj Initial check-in 2010-07-24 12:39:47 +01:00
README Flesh out the README 2010-07-24 14:17:10 +01:00

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ray1729.clojure.sudoku

A naive Sudoku puzzle solver written in Clojure.

This solver implements a trivial strategy consisting of elimination
and trial-and-error.

## Usage

(require '[ray1729.clojure.sudoku.core :as sudoku])

(def g (sudoku/parse-grid "400000805030000000000700000020000060000080400000010000000603070500200000104000000"))

(sudoku/solved? g)
;;=> false

(sudoku/print-grid g)
;; ...4..... 1....67.9 12...67.9 | 1.3.....9 .23..6..9 12...6..9 | .......8. 123.....9 ....5....
;; .2...6789 ..3...... 12..56789 | 1..45..89 .2.456..9 12.456.89 | 12...67.9 12.4....9 12.4.67.9
;; .2...6.89 1...56.89 12..56.89 | ......7.. .23456..9 12.456.89 | 123..6..9 1234....9 1234.6..9
;; ------------------------------+-------------------------------+------------------------------
;; ..3...789 .2....... 1.3.5.789 | ..345...9 ..345.7.9 ...45.7.9 | 1.3.5.7.9 .....6... 1.3...789
;; ..3..67.9 1...567.9 1.3.567.9 | ..3.5...9 .......8. .2..567.9 | ...4..... 123.5...9 123...7.9
;; ..3..6789 ...456789 ..3.56789 | ..345...9 1........ .2.4567.9 | .23.5.7.9 .23.5..89 .23...789
;; ------------------------------+-------------------------------+------------------------------
;; .2.....89 .......89 .2.....89 | .....6... ...45...9 ..3...... | 12..5...9 ......7.. 12.4...89
;; ....5.... .....6789 ..3..6789 | .2....... ...4..7.9 1..4..789 | 1.3..6..9 1.34...89 1.34.6.89
;; 1........ .....6789 ...4..... | ....5..89 ....5.7.9 ....5.789 | .23.56..9 .23.5..89 .23..6.89

(def s (sudoku/solve g))

(sudoku/solved? s)
;;=> true

(sudoku/print-grid s)
;; ...4..... 1........ ......7.. | ..3...... .....6... ........9 | .......8. .2....... ....5....
;; .....6... ..3...... .2....... | 1........ ....5.... .......8. | ........9 ...4..... ......7..
;; ........9 ....5.... .......8. | ......7.. .2....... ...4..... | ..3...... 1........ .....6...
;; ------------------------------+-------------------------------+------------------------------
;; .......8. .2....... ....5.... | ...4..... ..3...... ......7.. | 1........ .....6... ........9
;; ......7.. ........9 1........ | ....5.... .......8. .....6... | ...4..... ..3...... .2.......
;; ..3...... ...4..... .....6... | ........9 1........ .2....... | ......7.. ....5.... .......8.
;; ------------------------------+-------------------------------+------------------------------
;; .2....... .......8. ........9 | .....6... ...4..... ..3...... | ....5.... ......7.. 1........
;; ....5.... ......7.. ..3...... | .2....... ........9 1........ | .....6... .......8. ...4.....
;; 1........ .....6... ...4..... | .......8. ......7.. ....5.... | .2....... ........9 ..3......

## Installation

FIXME: write

## See Also

This code inspired by: http://norvig.com/sudoku.html

All you want to know about Sudoku: http://www.sudokuwiki.org/

## License

Copyright (C) 2010, Ray Miller <ray@1729.org.uk>.

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
PUBLIC LICENSE, <http://www.eclipse.org/org/documents/epl-v10.php>.

ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES
RECIPIENTS ACCEPTANCE OF THIS AGREEMENT.