数独检查器和生成器:检查但不会生成

2024-06-17 00:12:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一个程序:

  1. 生成(可能是错误的)数独解决方案。在
  2. 检查解决方案是否正确
  3. 如果是,打印出来。在
  4. 如果不是,返回1。在

它能正确检测有效和无效的解决方案。
我从不犯错。在

但是:

当告诉程序生成一个新的随机解时,直到它找到一个有效的解,它就会一直运行。在

我生成尝试的“解决方案”的方法是列出9个列表,每个列表包含9个数字,每个列表都是数字1-9的混合,如下所示:

   SUDOKU_ATTEMPT = [[8, 9, 6, 3, 7, 4, 2, 5, 1],
                     [6, 3, 4, 8, 1, 9, 7, 2, 5],
                     [1, 2, 5, 6, 8, 4, 7, 3, 9],
                     [1, 2, 9, 4, 3, 7, 8, 5, 6],
                     [6, 4, 9, 2, 3, 1, 7, 8, 5],
                     [3, 1, 8, 2, 7, 4, 9, 5, 6],
                     [3, 7, 2, 8, 4, 9, 5, 6, 1],
                     [7, 2, 1, 6, 4, 5, 3, 8, 9],
                     [2, 7, 8, 9, 4, 5, 1, 3, 6]]

如您所见,rows将是正确的。
但不一定是columns,也不是{}。在

Posts I checked:

请考虑投票。如果你认为这个问题可以改进,请提出建议。在


Tags: 程序列表错误notit数字java解决方案
1条回答
网友
1楼 · 发布于 2024-06-17 00:12:00

记录在案,并根据评论中的讨论:

你基本上是生成随机的9x9矩阵,直到其中一个是数独的解决方案。 问题是您使用了非常弱的约束:从1到9的整数,并且每行都是唯一的。在

实际生成有效解的概率非常低(计算它是一个很好的数学练习!)。因此,您的代码可能看起来永远运行,即使它在逻辑上终止。在

在这种情况下,依赖随机性并不是正确的解决方案。在

相关问题 更多 >