Sudoku Solver in pure Python with no dependencies
Project description
Sudoku Solver written in pure Python with no dependencies.
It solves Sudokus of sizes N x N by pure induction as far as is possible, and then uses an optional Dancing Links solver, which is a brute force methodology, when the basic induction is not enough.
Installation
Install by calling:
pip install dlxsudoku
Testing
Tests can be run using pytest:
py.test tests
The tests make a HTTP request to a file containing several Sudokus on Project Euler.
Usage
A Sudoku stored in a file can be solved as such:
from dlxsudoku import Sudoku
s = Sudoku.load_file('path/to/sudoku.sud')
s.solve(verbose=True, allow_brute_force=True)
Alternatively, if your Sudoku is stored in string variable it can be solved in the following fashion:
from dlxsudoku import Sudoku
sudoku_string_1 = "030467050920010006067300148301006027400850600090200400005624001203000504040030702"
sudoku_string_2 = "# Example Sudoku\n" + \
"*72****6*\n" + \
"***72*9*4\n" + \
"*9*1****2\n" + \
"*******4*\n" + \
"82*4*71**\n" + \
"**9*6*8**\n" + \
"***9**6**\n" + \
"**3*72*9*\n" + \
"*6*843*7*"
s1 = Sudoku(sudoku_string_1)
s1.solve()
print(s1.to_oneliner())
s2 = Sudoku(sudoku_string_2)
s2.solve()
print(s2)
Sudoku formatting
A Sudoku file or string should be structured in the following manner:
# Optional comment or metadata *72****6* ***72*9*4 *9*1****2 *******4* 82*4*71** **9*6*8** ***9**6** **3*72*9* *6*843*7*
or as a one-liner:
030467050920010006067300148301006027400850600090200400005624001203000504040030702
Any character other than [1-9] may be used as a placeholder for unknowns.
References
The Dancing Links code has been adapted from Algorithm X in 30 lines!, only modified slightly to accommodate class structure and Python 2.6.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file dlxsudoku-0.9.3.tar.gz
.
File metadata
- Download URL: dlxsudoku-0.9.3.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 151500bb16ff1681bb29bdbb049bb6bdb34e9401b75503a25ebbd9540ed7c9f7 |
|
MD5 | 562ea44ef3940dc6eedc91bd64e875ca |
|
BLAKE2b-256 | 24c8adb14f1ca3051fda12baf8bec9b67231d5e9018dbb341e0eca09b571d5a3 |
File details
Details for the file dlxsudoku-0.9.3-py2.py3-none-any.whl
.
File metadata
- Download URL: dlxsudoku-0.9.3-py2.py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44116030f726b0d2e7af59efe7eb59f422991ff429f6d8b4e905bddf08df20e7 |
|
MD5 | 32fbb7749ba479b0b4c2e248766ea704 |
|
BLAKE2b-256 | 9511e3881f772789f439540577c272bbf5adeaea74aaa64ea2749ca638111877 |