纯Python编写的无依赖的数独求解器
项目描述
用纯Python编写的无依赖的数独求解器。
它尽可能通过纯归纳法解决大小为N x N的数独,然后使用可选的Dancing Links穷举求解器,当基本归纳法不足以解决问题时。
安装
使用pip安装
pip install dlxsudoku
测试
可以使用pytest运行测试
py.test tests
测试会对Project Euler上包含多个数独的文件发起HTTP请求。
用法
存储在文件中的数独可以按如下方式解决
from dlxsudoku import Sudoku
s = Sudoku.load_file('path/to/sudoku.sud')
s.solve(verbose=True, allow_brute_force=True)
或者,如果您的数独存储在字符串变量中,可以按以下方式解决
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)
DLXSudoko将具有多个解的数独视为错误的,并在这种情况下引发 dlxsudoku.exceptions.SudokuHasMultipleSolutionsError 异常。
从终端使用
DLXSudoku还安装了一个控制台入口点。可以从字符串或路径解决数独
solve-sudoku --sudoku 030467050920010006067300148301006027400850600090200400005624001203000504040030702
或
solve-sudoku --path "path/to/sudoku.sud"
数独格式
数独文件或字符串应按以下方式组织
# 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*
或作为一行
030467050920010006067300148301006027400850600090200400005624001203000504040030702
除了[1-9]之外的任何字符都可以用作未知数的占位符。
参考资料
动态链接代码已从30行算法X!改编而来,仅略作修改以适应类结构和Python 2.6。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
dlxsudoku-0.10.3.tar.gz (15.3 kB 查看哈希值)
构建分发
dlxsudoku-0.10.3-py2.py3-none-any.whl (12.2 kB 查看哈希值)
关闭
dlxsudoku-0.10.3.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 31713024e8d4e0c2ce10028eb7c5d2e788639d5df66ea55b4a38dc9bed52a719 |
|
MD5 | c77aa7f2533c9703d7ed7e198c01f355 |
|
BLAKE2b-256 | b28ed0cc930e410ab643cd5b8e78a0d62f086f0b509ac38740948667a1b74e6b |
关闭
dlxsudoku-0.10.3-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 43e86e4e3d9eb42fcec62cf0eed02043ce5c36dbd87e2f2afb234209a6285253 |
|
MD5 | 925cc190112e2b01fe5dd1e195bb3211 |
|
BLAKE2b-256 | df43ebad5140625cbb2e9c817b8f955e997efa714d7d20a5d72aaa40a68298ab |