数独发生器和求解器与逐步指导
dokusan的Python项目详细描述
数独发生器和解算器与一步一步的指导
安装
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
- 项目
标签: