纯python中的数独解算器
dlxsudoku的Python项目详细描述
用纯python编写的数独解算器,没有依赖关系。
它通过纯归纳法尽可能地解决了N x N大小的数独问题 可能,然后使用可选的Dancing Links暴力 求解器,当基本归纳法不够时。
安装
使用pip安装:
pip install dlxsudoku
用法
存储在文件中的数独可以这样求解:
fromdlxsudokuimportSudokus=Sudoku.load_file('path/to/sudoku.sud')s.solve(verbose=True,allow_brute_force=True)
或者,如果数独存储在字符串变量中,则可以是 以以下方式解决:
fromdlxsudokuimportSudokusudoku_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]之外的任何字符都可以用作 未知。
参考文献
舞蹈链接代码是根据Algorithm X in 30 lines!改编的, 只是稍加修改以适应类结构和Python2.6。