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

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 安卓 XMLPullParser错误   Java响应网格布局   Java中使用递归的不同方法   java变量可能尚未初始化(边加权图)   java如何将这样的文件插入MySQL数据库   java云端点:不允许实体类型的数组或集合   java(编译器或jvm)是否以不同方式处理类的静态最终成员?如果是,怎么做   java如何从lambda表达式返回新的非抽象映射?   java JDK 7支持的最大Spring版本是什么   我们如何从java类生成DTD   java在我的例子中BindingResult、FieldErrors或GlobalErrors是否可以为null?   java[LibGDX][GWT]读取文件外观时出错。HTML格式的json[序列化异常]   字典Java不可修改密钥集映射   java Admob在firebase sdk之后显示测试广告,但不显示真实广告