数独谜题是如何制作的
一道数独如何生成:先构建一个完整解出的网格,再移除提示,同时检查解仍保持唯一。
你玩的每道数独都是由生成器构建的,理解这一过程能揭开谜题的神秘面纱。它分两个阶段进行:先创建一个完全填满、有效的网格,再从中剜去提示,直到得到一道仍可唯一求解、但不会比所需更简单的谜题。
我们的谜题由共享引擎从一个种子生成,这正是同一种子总产生相同盘面的原因 — 也是本维基中的练习盘是真实生成的谜题、而非手工输入示例的原因。
第 1 步:构建一个完整解
生成器用一组完整、有效的数字排布填满一个空网格 — 每行、每列和每宫都正确。这通过随机回溯填充完成,因此每次运行都产生不同的完成网格。
第 2 步:移除提示,检查唯一性
随后逐个移除提示。每次移除后,生成器重新求解网格,以确认它仍恰好只有一个解;如果某次移除会造成第二个解,该提示就被放回。难度目标控制移除多少提示,以及需要哪些解题技巧。
- 填满一个完整、有效的网格(随机回溯)。
- 逐个移除提示,每次都重新检查唯一性。
- 当难度目标达成且解仍唯一时停止。
常见问题
- 为什么同一个种子总产生相同的谜题?
- 引擎是确定性的:种子固定了随机选择,因此用该种子的每次生成都产生相同的网格。正是这一点让本维基能嵌入可复现的练习谜题。
- 生成器怎么知道一道谜题很难?
- 它瞄准一个提示数量,并检查解出结果需要哪些技巧。更少的提示和更难的所需推理都会把一道谜题推上难度阶梯。
相关阅读
延伸阅读
在线练习
在带提示、笔记和四种难度的免费谜题上加以实践。
玩数独