数独发生器和求解器与逐步指导

dokusan的Python项目详细描述


Build StatusCoverage StatusChecked with mypyPyPI Package latest releasePyPI WheelSupported versionsGPLv3 License

数独发生器和解算器与一步一步的指导

安装

pip install dokusan

快速启动

数独求解器

分步求解器

像是用数独解决这个问题。 目前支持以下技术:

  • 裸体/隐形单品
  • 裸对/三胞胎
  • 锁定候选者
  • XY翼
  • 唯一矩形

例如,要查看数独的所有技巧:

^{pr2}$

基于回溯的解算器

该求解器基于回溯算法, 不过稍微修改一下就可以快速工作了

fromdokusanimportsolvers,renderersfromdokusan.boardsimportBoxSize,Sudokusudoku=Sudoku.from_list([[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,3,0,8,5],[0,0,1,0,2,0,0,0,0],[0,0,0,5,0,7,0,0,0],[0,0,4,0,0,0,1,0,0],[0,9,0,0,0,0,0,0,0],[5,0,0,0,0,0,0,7,3],[0,0,2,0,1,0,0,0,0],[0,0,0,0,4,0,0,0,9],],box_size=BoxSize(3,3),)solution=solvers.backtrack(sudoku)print(renderers.colorful(solution))

数独发生器

生成器算法主要基于 article作者:丹尼尔·比尔。 生成排名为150的数独游戏的平均时间为700毫秒

要生成新的数独游戏:

fromdokusanimportgenerators,rendererssudoku=generators.random_sudoku(avg_rank=150)print(renderers.colorful(sudoku))

排名和数独难度

avg_rank选项大致定义了数独的难度。 排名低于100的数独游戏只包含裸/隐藏单曲。 秩大于150的数独包含 裸子集/锁定候选/XY翼等…, 然而,这并不总是有保证的。在

对于更高的等级,也不能保证生成的数独排名 将高于提供的avg_rank, 因此,为了确保数独游戏有理想的排名,可以执行以下操作:

fromdokusanimportgenerators,statsavg_rank=450whilestats.rank(sudoku:=generators.random_sudoku(avg_rank))<avg_rank:continue

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

推荐PyPI第三方库


热门话题
实现接口方法时不允许java@Override   使用BuffereImage加载映像时java高ram使用率   java For循环混乱,为什么不是循环?   java Android网格视图字符串对齐问题   java如何将方法与比较类型的附加功能进行比较?   在Java Swing中放置JSepator后的间隙大小   java如何避免并发访问我的网站中的支付链接   java如何从现有的Unix服务器连接到FTP服务器?   Spring中的java用户相关bean定义   带有scribesjava库的wordpress Woocommerce REST API返回消费者密钥参数缺失错误消息   java我可以自动检测特定设备连接的串行端口吗?   Javafx棋盘游戏   java使用JTextPane显示HTML,支持SVG吗?   SpringBoot如何在java中将映射转换为实体对象?   如何使用java代码对xls文件进行密码保护   Java JPA(EclipseLink)如何在持久化实际实体之前接收下一个生成的值?   Javaservlet启动外部进程