纯python中的数独解算器

dlxsudoku的Python项目详细描述


Build StatusPyPi versionPyPi downloadsPyPi licenseCoverage Status

用纯python编写的数独解算器,没有依赖关系。

它通过纯归纳法尽可能地解决了N x N大小的数独问题 可能,然后使用可选的Dancing Links暴力 求解器,当基本归纳法不够时。

安装

使用pip安装:

pip install dlxsudoku

测试

可以使用pytest

运行测试
py.test tests

测试对一个包含几个sudokus的文件发出http请求 Project Euler

用法

存储在文件中的数独可以这样求解:

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。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java测试访问令牌过滤器   close()上的java Apache POI运行时异常   java为什么Eclipse中的GWT总是显示错误404?   java从socket python服务器接收消息   java mediaRecorder:start()函数失败   不关闭DB连接可能是Tomcat上Java堆溢出的原因吗?   java JFrame无法关闭   java BigQuery加载本地文件不起作用,位置有问题   java可以在递归任务中使用吗?   servlets如何从JSESSIONID加载Java HttpSession?   java将JFileChooser与PDFBox一起使用时,文件不会另存为pdf,但保存时不带扩展名   java将处理结果存储在表中   java算法发现循环世界中重叠间隔的持续时间(24小时)   在windows 10上双击Eclipse安装程序可执行文件(eclipseinstjrewin64.exe)后,java不会发生任何事情   java编译和部署自定义Solr请求处理程序   Java/Android崩溃ApacheCommonsio2。4.jar   spring web应用程序中的java集成收件箱功能   java Grizzly、Jersey和Spring自动布线问题   java如何在pom中添加jar文件依赖项。xml   关于Android中大量GUI更新编码的java概念(GUI处理程序)