中等数独技巧
学习唯一候选数和隐性唯一数。
中级难在哪里
中级题提供 30–37 个线索数——比简单题少,且排列方式使得纯粹的交叉排除和裸单并非始终奏效。你需要两种额外技巧:隐式唯余(隐藏单数)和候选数锁定(也叫指向数对或行列-宫格削减)。铅笔标记——在每个空格中写下候选数列表——也变得真正必要,而非可选。
好消息是:每道中级数独都有唯一解,且只需逻辑就能得出。不需要任何猜测。如果你感到卡住,本指南中的某种技巧一定能解锁下一步。
隐式唯余:中级核心技巧
隐式唯余(隐藏单数)是指某个格子是某行、某列或某宫格中放置特定数字的唯一合法位置——即使该格子本身仍有多个候选数。这个数字"隐藏"在其他候选数之中。
思维转变:裸单问的是"哪些数字可以填在这个格子里?",隐式唯余问的是"这个数字在这个组里能放在哪里?"两者是同一约束的互补视角。
逐步寻找隐式唯余:
- 选择一个数字,比如 7。
- 观察某一行。对该行每个空格,判断 7 是否是合法候选数(不出现在该格所在的列或宫格中)。
- 如果该行只有一个空格能合法放置 7,就填入。这就是隐式唯余。
- 对每一列和每个 3×3 宫格重复操作。
Column 5 — candidates per empty row cell:
Row 1: {2, 5, 9}
Row 2: {3, 5}
Row 3: {1, 5, 7} ← 7 appears here and nowhere else in this column
Row 4: {2, 3}
Row 5: {2, 5, 8}
Row 6: {3, 5}
Row 7: {2, 5}
Row 8: {2, 5}
Row 9: {2, 5}
(rows 4 and 6 are given cells, omitted)
→ 7 only appears as a candidate in row 3.
Place 7 at (row 3, col 5) — hidden single confirmed.
候选数锁定(指向数对与数三元组)
有时,某个 3×3 宫格内某候选数字只能出现在同一行或同一列的格子中。一旦如此,该数字就必须落在那行或那列——在宫格内的某处。因此,你可以将该数字从同行或同列中宫格外的其他空格里排除。
这种技巧叫候选数锁定(根据涉及两个或三个格子,也叫指向数对/数三元组)。
步骤如下:
- 选择一个宫格和一个尚未填入其中的数字。
- 列出宫格内所有该数字仍为候选数的格子。
- 如果所有这些格子都在同一行——或同一列——该数字就被锁定在该宫格的这条线上。
- 将该数字从同行或同列中宫格外的其他空格中排除。
Top-right box (rows 1–3, cols 7–9) — scanning for digit 4: (1,7): 4 is impossible — row 1 already has 4 (1,8): 4 is impossible — row 1 already has 4 (1,9): 4 is impossible — row 1 already has 4 (2,7): 4 is impossible — row 2 already has 4 (2,8): 4 is impossible — row 2 already has 4 (2,9): 4 is impossible — row 2 already has 4 (3,7): 4 is a candidate ✓ (3,8): 4 is a candidate ✓ (3,9): 4 is impossible — col 9 already has 4 All 4-candidates in this box land on row 3. → Eliminate 4 from every other empty cell in row 3 outside this box (cells in cols 1–6 that still list 4 as a candidate).
候选数锁定不会直接填入数字——它排除候选数,这可能在该行或列的其他地方暴露出隐式唯余或裸单。
行列-宫格削减(反向操作)
行列-宫格削减是候选数锁定的镜像操作。如果某行(或某列)中某候选数字只出现在一个特定的 3×3 宫格内——该行的其他位置都没有——那么这个数字必须落在该宫格内的这一行上。你可以从该宫格中不在目标行的其他格子里排除该数字。
操作方法:
- 在某行扫描一个数字。记录该行中仍将该数字列为候选数的所有空格。
- 如果所有这些格子都落在同一个 3×3 宫格内,该数字就被宫格锁定在这一行。
- 从该宫格中不在这一行的其他格子里排除该数字。
行列-宫格削减与候选数锁定在逻辑上等价,但从相反方向审视谜题。两者合用,可处理中级谜题中绝大多数的排除操作。
系统性使用铅笔标记
中级难度下,铅笔标记不是可选项——它是正确的工具。以下是一套规范的工作流程:
- 先整理棋盘: 在填写候选数之前,先应用所有显而易见的裸单和最后一格步骤,减少后续的干扰。
- 为每个空格标记候选数: 逐格根据行、列和宫格排除写下候选数。要写全——漏掉一个候选数会隐藏一步有效推断。
- 应用隐式唯余: 对每行、每列和每宫格,检查是否有某个数字只出现在一个格子的候选数列表中。
- 应用候选数锁定: 扫描每个宫格,寻找候选数对齐在同一行或同一列的数字。
- 每次填入后更新: 从同行、同列、同宫格所有格子的候选数列表中移除已填数字,再从第 3 步重新开始。
保持准确候选数列表的纪律,正是快速、可靠的解题者与"卡在中级"的人之间的分水岭。技巧本身并不难——关键在于坚持。
卡住时怎么办
如果全面扫描后仍无步骤可走,在重新审视方法之前,按顺序尝试以下步骤:
- 重新检查每行、每列、每宫格的隐式唯余。 第一遍扫描很容易遗漏,尤其是在接近满格的组中。
- 查看最近填入格子所在宫格的候选数锁定情况。 新的填入可能已将某个数字从分散在两列(行)压缩到了一列(行)内。
- 检查铅笔标记是否正确。 一个错误或遗漏的候选数可能隐藏了一步合法推断。重新推导几个可疑格子的候选数。
- 对尚未近期检查的行和列重新应用行列-宫格削减。
中级谜题始终可以不靠猜测解出。如果以上步骤都用尽仍无进展,最可能的原因是早先的铅笔标记出错。使用撤销回退到可能出错之前的状态。
中级解题检查清单
每次填入后,依次过一遍以下清单。大多数中级谜题反复执行这五项检查就能解出:
- 是否有格子只剩一个候选数?→ 裸单——填入。
- 是否有数字在某行、某列或某宫格中只能填入一个格子?→ 隐式唯余——填入。
- 是否有数字在宫格内只集中在同一行或同一列?→ 候选数锁定——在宫格外排除。
- 是否有数字在某行/列中只集中在一个宫格内?→ 行列-宫格削减——在宫格内排除。
- 是否有组只剩一个空格?→ 最后一格——立刻填入。
每次填入后按顺序检查这张清单。随着练习,模式识别会越来越快——几周后,你就能不需要刻意过清单,直接发现隐式唯余和候选数锁定。