数独的规则一句话就说完:把 1–9 填进 9×9 的格子,让每行、每列、每个 3×3 宫内 1–9 各出现一次。但从「知道规则」到「不卡住」之间,差的是三招基本功。
它们覆盖了绝大多数常规题,也正好对应本工具提示时给出的三种理由。看懂之后就不用猜了——事实上工具生成的题从来不需要猜,这一点后面会说到。
第一招:唯余法(唯一候选)
从格子出发问:这一格还能填什么?
一格的「同伴」是它所在的行、列、宫的全部格子。如果这些同伴已经占掉了 8 个不同数字,那么这一格只剩一个数字可填。
r5c5 的同行、同列、同宫里已经出现:1 2 3 4 5 6 8 9
↓
r5c5 只能填 7
这是最直观的一招,也是新手唯一会用的一招——问题正出在这里。
第二招:排除法(唯一位置)
从数字出发问:这个数字还能放哪儿?
在一个宫(或一行、一列)里,某个数字的可放位置被别处的同数字封杀到只剩一格,那一格就是它。
看一个可以照着数的例子。关注宫 1(左上 3×3)里的数字 3:
c1 c2 c3 │ c4 …
r1 · · · │ 3 ← 第 1 行已有 3,宫 1 第 1 行整排排除
r2 · · ★ │ ·
r3 3 · · │ · ← 第 3 行已有 3,同时封住第 1 列
⋮
r7 · 3 · │ · ← 第 2 列已有 3
逐格排掉:
- r1c1 / r1c2 / r1c3 —— 第 1 行已有 3
- r3c2 / r3c3 —— 第 3 行已有 3
- r2c1 —— 第 1 列已有 3(就是 r3c1 那个)
- r2c2 —— 第 2 列已有 3
只剩 r2c3(★),它必须是 3。
注意这个局面下 r2c3 的候选可能还有好几个——唯余法看不出来,只有从数字出发才能发现。这就是两招视角正交的意思。
开局请从这一招开始。 起手盘面空,单个格子候选往往四五个,盯格子看不出结果;而「某数字在某宫只剩一格」在开局非常多。拿定一个数字扫完 9 个宫,1–9 走一遍,通常能填出十几个。
这一招在中文数独圈也叫摒除法,英文叫 hidden single。
第三招:区块排除
前两招都是直接填数,这一招不填数,它排除候选——用完之后要回头再走前两招。也正因为如此,它放在最后。
规则有两个方向。
方向一:宫 → 行/列
某个数字在一宫内的候选格全挤在同一行(或同一列),那么这一行上、该宫之外的格子都可以排除它。
关注宫 1 里的数字 7:
c1 c2 c3 │ c4 c5 c6 │ c7 c8 c9
r1 · 5 · │ ? ? ? │ ? ? ?
r2 2 · 9 │ · · · │ 7 · · ← 第 2 行已有 7
r3 4 1 8 │ · · · │ · · ·
宫 1 的空格是 r1c1、r1c3、r2c2。其中 r2c2 因为第 2 行已有 7 而排除,于是 7 在宫 1 里只能落在 r1c1 或 r1c3——都在第 1 行。
7 一定要在宫 1 出现一次,那它一定出现在第 1 行的这两格之一。结论:第 1 行上 c4–c9 的所有格子都可以排除 7(图中标 ? 的位置)。
排掉之后回头看:如果 r1c6 原本的候选是 {3, 7},现在就只剩 3——唯余法立刻可用。这就是三招接起来的样子,也是工具提示里「区块排除后再找唯一候选」那条理由的来源。
方向二:行/列 → 宫
反过来也成立:某个数字在一行内的候选格全落在同一宫里,那么这一宫内、该行之外的格子都可以排除它。
两个方向本质是同一件事——候选被锁在了一个行与宫的交叉区块里,所以英文叫 locked candidates。中文有时叫「宫区块」和「行列区块」。
术语对照
不同来源的叫法很乱,对上号就不会被绕晕:
| 本工具 | 中文常见别名 | 英文 | 视角 |
|---|---|---|---|
| 唯一候选 | 唯余法 | naked single | 盯格子 |
| 唯一位置 | 排除法、摒除法 | hidden single | 盯数字 |
| 区块排除 | 宫区块、行列区块 | locked candidates | 排候选 |
卡壳时的三条自查
按顺序过一遍,多数卡壳当场就解开了:
- 1–9 每个数字都完整扫过一遍 9 个宫了吗? 最常见的是只扫了自己觉得「快满了」的那几个数字
- 只扫宫、忘了扫行和列吗? 「某数字在这一行里只剩一格」同样成立,很多人只在宫里扫
- 填完一个数之后重新扫了吗? 每填一个数字都会给它所在的行、列、宫开新口子,下一步最可能就在这三处
养成第 3 条的习惯,比学任何新技巧提速都明显。
三条都走完还推不动,才轮到区块排除。
已知数少不等于难
「已知数越少越难」是最普遍的误解。已知数只决定起手有多空,真正决定难度的是填完全程需要用到多深的技巧——26 个已知数的题可能一路唯余法推到底,30 个的反而可能卡在区块排除上。
工具的四档难度因此是按技巧深度挖的:
| 档位 | 已知数 | 通常要用到的最深技巧 |
|---|---|---|
| 入门 | 45 | 几乎全程唯余法 |
| 简单 | 36 | 唯余法为主,约两成要排除法 |
| 困难 | 30 | 大多要排除法,少数要区块排除 |
| 专家 | 22–28 | 排除法必用,约四分之一要区块排除 |
挖空是逐格验证着挖的:每挖掉一个数字都要确认「剩下的盘面仍然只靠这几招就能填完」,挖不动就停。入门 / 简单档的判据是两招,困难 / 专家档放宽到三招。
判据比「唯一解」更强,所以唯一解是顺带保证的——能一路推到底,自然只有一个解。这也是四档全都不需要猜、提示永远讲得出理由的原因。
顺带一个硬事实:唯一解数独的已知数下限是 17 个,2012 年 McGuire 等人用穷举计算证明了 16 个已知数不可能有唯一解。所以看到「只有 20 个数字的超难题」不必被格数吓到,要看的是技巧深度。
三招之外还有什么
外面的题(报纸、杂志、各类 App)不一定保证「能用人类技巧推出来」——很多出题程序只验证唯一解,而唯一解可以靠回溯搜索确认,那条路机器能走、人走不了。碰上这种题就需要进阶技巧:
- 数对 / 隐性数对——两个格子的候选恰好是同两个数字,这两个数字就锁在这两格里,同单元其它格可以排除它们
- X-Wing、Swordfish——同一数字在两行里的候选位置恰好占同两列,形成矩形约束
- 各类链——沿候选之间的逻辑关系传递假设
需要这些的题可以把题面敲进数独求解器:它的「下一步」内置的正是本文这三招,推不动时会明确告诉你需要更深的技巧,求解按钮仍然给得出完整答案。自己出的题想验合格性,见为什么必须唯一解。
练习时的两个小设置
提示怎么用:按一次只高亮目标格并说明理由,再按一次才真正填入——中间那一步是留给你自己想的。想认真挑战成绩就一次都别按(用过提示的局不计入本档最佳时间);想学技巧就放心按。
计时会在切到后台时暂停。一局数独动辄十几分钟,挂着不算成绩才公平。进度、铅笔标记、用时、提示次数都存在本机浏览器里,关掉页面再回来接着填,不上传、不需要登录。
开一局练手:数独四档难度都保证唯一解且不需要猜。想换个动脑子的:数独求解器能把任何题面逐步讲一遍,魔方 3D 教程的入门路径见CFOP 4 步还原,国际象棋开局的三原则见开局三原则与主线入门。