高级 约 9 分钟
X-Wing:一个数字只有四个落脚点
四格成矩形,一个数字,换来一个足够硬的保证:整两条线都可以划掉它的候选。
一句话版本
X-Wing 是这样出现的:某个数字在两条平行线上都恰好只有两个落脚点,而这两条线指向的是同样两条垂直线。四个格子,一个矩形,一个数字。
它给你的保证很窄,但是绝对的:在穿过矩形的这两条垂直线里,这个数字不可能出现在四个角之外的任何地方。删掉,继续走。
形状
挑一个数字。挑两行。在这两行里,这个数字都必须恰好只有两个落脚点,而且两行用的是同样那两列。它们交汇的四个格子围成一个矩形——四个角。
反过来一样:两条列,每条都恰好只有两个落脚点,且都落在同样两行上。
两种写法是同一个图形从不同方向看,而排除发生在你「进来」的那个方向。这部分最多人做错,所以值得给它们命名:
- 基——这个数字被限制住的那两条线(每条恰好两个落脚点的那两条)。
- 覆盖——横穿四个角的那两条垂直线。
- 排除发生在覆盖线上、矩形之外。永远不在矩形里面。
为什么成立
证明是一个两情况讨论,短到可以装在脑子里。
假设这个数字被限制在第 3 列和第 7 列,落脚点只在第 1 行和第 3 行。现在问:第 3 列的这个数字在哪一行?要么第 1 行,要么第 3 行,没有第三个位置。
- 如果它在第 1 行(第 3 列),那么第 1 行已经有这个数字了。于是第 7 列里它不能在行 1;而第 7 列只允许行 1 和行 3,所以它只能在第 3 行。
- 如果它在第 3 行(第 3 列),镜像成立:第 7 列的它必须在第 1 行。
无论哪种情况,第 1 行和第 3 行最后都恰好各含这个数字一次,而且都落在第 3 列或第 7 列。因此在第 1、3 行里,它不可能在别处。从这两行的其余部分删掉它。
你永远不会知道是哪个角装着它。这没关系——这个排除不依赖你知不知道。
一张真实盘面
这是活盘面上的同一个图形。候选数已经过滤到只剩 4——填好的数字照原样保留,其余都是噪音。
走一遍:
- 在第 4 列,4 只能放 R8C4 或 R9C4。两格,没有别的——而这一列有七个空格。
- 在第 8 列,4 只能放 R8C8 或 R9C8。又是两格。
- 两次都是同样两行。这就是矩形:R8C4、R8C8、R9C4、R9C8。
现在用结论。第 8 行必须有一个 4,而它只能在第 4 列或第 8 列——所以记在 R8C3 和 R8C2 的 4 都不可能。第 9 行还多送一个:它的 4 只能在 R9C4、R9C8 或 R9C3,所以 R9C3 也划掉。
三条排除,两行都关上了:它们的 4 只能落在矩形里。注意,一条线看起来填得多满完全不说明问题——第 8 列快填完了,第 4 列空得很,两者对这个数字都恰好只有两个落脚点。唯一重要的是数出来的个数。
怎么扫出来
X-Wing 是逐个数字找的,而且先扫稀疏的线会容易得多。
- 一次只看一个数字。 不要在盘面上找形状,要找某个具体的数。
- 数每条线的落脚点。 对你选中的数字,沿每一列走一遍,数有几格放得下。你要的是恰好两格。一格的是隐单,三个以上在这里没用。
- 把「两格」的线放在一起比。 如果两条列都只有两个落脚点,而且落在同样两行上,你就有 X-Wing 了。行不同就继续往下扫。
- 换方向再来一遍。 镜像版本——两条行各两个落脚点、指向同样两列——是同一次搜索把行列互换。多数人习惯扫行,所以基于列的 X-Wing 更容易被漏掉。
- 清覆盖线。 把这个数字从两条交叉线的其余部分删掉,只留四个角。
一个实用的捷径:数字快填完时,它的落脚点就少,而快填完的数字正是 X-Wing 的住处。从盘面上出现次数最多的那个数字开始。
它证明不了什么
X-Wing 不告诉你哪个角装着这个数字。它也不对两条基线说任何话——在第 3 列和第 7 列内部,候选位置原封不动。所有排除都发生在垂直方向。
这个不对称是最常见的错误。看到矩形之后,人往往会去删两条列,而那是图形不支持的方向,最后一定把盘面弄崩。
还有一个更隐蔽的坑:图形要求每条线上恰好两个落脚点。如果某条列有三格能放这个数字,矩形就不存在,即使其中两格正好是角。三个落脚点意味着它可能逃到第三个位置,两情况讨论立刻塌掉。
X-Wing 和剑鱼
剑鱼是同一个推理用三条线而不是两条:三条列,这个数字在每条上只有两到三个落脚点,且全部落在三行之内。它最多涉及九格,排除发生在三条行上。
如果 X-Wing 已经不费劲,剑鱼就不是新技巧——它是同一道数数题,网撒得更大。扫描顺序一样,「排除方向垂直于基」的规则也一样。
这个家族还能往上走(水母是四条线),但到那个层级,图形已经稀有到别的技巧通常先把题做完了。
什么时候值得用
X-Wing 出现在那种别处都卡死的题里:没有裸单,没有数对,每个格子都是三四个候选。这时候三十秒的数数才划算。
它也是第一个让数独像下棋而不像算术的技巧——这一步的价值不是一个数字,而是对「以后数字能去哪」的一条限制。
常见疑问
什么是 X-Wing?
某个数字在两条平行线上都只有两个落脚点,且这两条线的落脚点落在同样两条垂直线上,四格围成一个矩形。这个数字可以从这两条垂直线上、矩形之外的其他格子排除。
该从行排除还是从列排除?
看「基」是哪一对线。如果这个数字在两条列上各只有两个落脚点,就从穿过它们的两行排除;如果在两条行上各只有两个落脚点,就从两列排除。
X-Wing 会直接填出一个数字吗?
永远不会。它删候选,删完常常造出一个裸单或另一个图形。把它看成一个「解锁下一步」的动作。
X-Wing 和剑鱼(Swordfish)什么关系?
剑鱼是同一个思路用三条线而不是两条,最多涉及九格。你对 X-Wing 说的每句话都能推广到剑鱼,扫描方法也完全一样。