进阶 约 7 分钟
两格已经私下商量好了
同一单元里两格都只有同样的两个候选,这两个数就被用掉了——单元里其余格子只好另找。
一句话版本
显性数对,是同一单元里两格,候选表完全相同,且都恰好只有那两个数。注意不是「都包含」,而是「恰好只有」。
既然这两格必须分摊这两个数,它们就被用掉了。单元里其他每一格,都要把这两个数划掉。
形状
找一个单元——一行、一列或一宫。在里面找两格。两格都必须写着「x、y」,不能再多。
如果一格是「4、7」,另一格是「4、7、9」,那就不是数对。第二格还有退路,没有什么逼它只能取 4 或 7,也就没有什么被用掉。
条件就这一条,值得说明白,因为绝大多数假象都是不小心把它放松了:两张表、恰好两个数、而且恰好是同样那两个数。
为什么成立
两格、两个数,每格只能填一个值。
假设数对是「4、7」。第一格不是 4 就是 7。不管是哪个,另一个数字都必须落到第二格里——因为第二格没别的地方可去。于是这两格合起来,正好消耗掉一个 4 和一个 7。
一行(或一列、一宫)里每个数字只能出现一次。两份都已经记在这两格名下了。所以 4 和 7 不可能出现在这个单元的其他任何位置。
注意这个论证不需要知道哪格填哪个。排除在「谁是谁」这个问题被回答之前、以及不管它怎么被回答,都成立。
真实盘面
第 1 行里两格,候选都只有两个:
- R1C7 写着「5、6」。
- R1C9 写着「5、6」。
表完全一样,同一行,两格。所以它们一个是 5、一个是 6,第 1 行的 5 和 6 都用完了。
后果落在第 1 行的其余部分:R1C3 的 5 被删掉。它本来是个候选,现在不是了。第 1 行的 5 由这两格供给。
注意这一步有多便宜。比两张候选表,删一个候选,这一行的确定性就往前进了一格。
怎么扫
显性数对是按格子找的,不是按数字找,所以扫描方式和隐性唯一数完全不同。
- 一个单元一个单元走。 挑一行,读它所有空格的候选表。你要找的是两张一模一样的短表。
- 先看短的。 数对必须恰好两个候选,所以凡是有三个以上候选的格子,全部跳过。这一步能砍掉盘面上大部分工作。
- 只在同一单元内比较。 两个都是「5、6」的格子,如果在不同行、又不共处任何单元,什么也构不成。论证的范围就是一个单元。
- 三种单元都查。 在宫里找到的数对,排除在宫里做。如果这两格同时还在同一行上,行里也能删——但这只是因为它们确实共用那一行,不能靠假设。
- 找后续。 删完之后回头再读受影响的格子。掉到只剩一个候选的格子就是裸单,数对的收益通常落在这一步。
一个有用的捷径:数对喜欢挤在拥挤的单元里。如果某一行有很多三候选、四候选的格子,而且一个都没解开,那一行最可能藏着数对。
三个假象
近似数对。「4、7」和「4、7、9」乍看是数对,不是。多出来的那个候选就是全部差别。
假三连。 三格都写着「4、7」——既不是数对,也不是三数组。这是三格都可以是 4 或 7,对两个数来说格子多了一个,谁也没被用掉。什么都别删。
跨单元数对。 同一行、不同宫的两个「4、7」,只能在这一行里删,不能顺带删宫。解题的人常因为「这两格看着有关系」就一起删了。它们的关系只存在于真正共用的那个单元里。
显性数对 vs 隐性数对
这两个被混得最多,而混淆的关键在方向。
- 显性数对:两格被锁在两个数上 → 把这两个数从单元的其他格子里删掉。
- 隐性数对:两个数被锁在两格上 → 把这两格里的其他候选删掉。
显性数对里,格子是证据,单元付账;隐性数对里,数字是证据,格子付账。如果你因为一个显性数对去删某格的候选,那就是方向反了。
用在哪
显性数对是第一个必须依赖完整候选表的技巧,所以它天然属于「盘面走不动了」的那一刻。它在中等和困难题目里出现得极频繁,而候选表写出来之后,检查它的成本很低。
它也能直接推广:三格分摊三个数是显性三数组,推理完全一样,只是更宽。如果数对对你来说已经很明显,三数组就是下一步,而不是新东西。
常见疑问
什么是显性数对?
同一行、同一列或同一宫里,两格的候选表完全相同,且都恰好只有两个数。这两格必定一格一个,所以单元里其他格子不能再出现这两个数中的任何一个。
显性数对和隐性数对有什么区别?
排除的方向相反。显性数对是把这两个数从单元里其他格子删掉;隐性数对是把这两格里的其他候选删掉。
三格各有两个候选,能算显性数对吗?
不能。三格共用两个数,这两个数就不再被这两格(而是三格)分摊,约束散了。数对要求恰好两格。
显性数对能直接填出数字吗?
很少。它删候选,而删完常常让某格只剩一个候选,于是变成裸单。把它看成「造出下一步」的动作。