购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

技巧14
二链列/四角对角线法则

盘面22

之前我们讲到了数对、三数组、四数组的显性和隐性的情况,但是候选数的技巧完全不止这一点。接下来的技巧一定会让您大开眼界,它比起数组要好玩得多,因为它可以构成一种特殊的形状。

如盘面22所示。当填到这里的时候,发现数对已经填不下去了。此时,我们可以观察到,在行A中,只有A2和A6可以填入6;而在行H中,只有在H2和H6可以填6。它们刚好构成一个矩形。可是这有什么用呢?

我们不妨假设一下(请在图上找到对应单元格,并进行推理):

●情况1:如果A2填6的话,那么A6和H2将不能填6,最终只有H6填6了;

●情况2:如果A6填6的话,那么A2和H6将不能填6,最终只有H2填6了。

只有这两种情况了。我们可以看到,情况1的假设是“A2=6”,结论是“H6=6”;而情况2的假设是“A6=6”,结论是“H2=6”。将这两种情况分别放到图上看,我们可以发现,无论是左上角(A2)和右下角(H6)填6,还是右上角(A6)和左下角(H6)填6,都会使得列2和列6出现一个6。所以列2和列6的其余位置,即这个“矩形”四个顶点外的其余单元格内,都将不会出现6的身影。因此,有C6,G6,I2,I6<>6。

把每一条假设的开头位置和结尾位置连接起来,会发现它组成了X的形状。所以这个解法的英文名由此得来——“X-Wing”。在英语中,wing是翅膀的意思,就像一个展开的翅膀一样。它有一个独特的名称——四角对角线法则。

有意思的是,这种方法还能够拓展到三阶的情况。这也就是为什么它还有一个名字,叫做二链列了。

在盘面22的二链列中,我们将产生二链列的单元(图中的行A和行H)叫做定义域(Defining Set/Base Set),表示二链列被定义的位置;并将需要排除候选数的单元(图中的列2和列6)称为摒除域或删除域(Secondary Set/Cover Set),表示用于排除或删除该候选数的位置。

图中涉及假设的所有位置(4个加圆圈的候选数)叫做鱼身(Fish Body),这到后面的鱼的变型中会非常常用。这样的结构我们称之为鱼(Fish)或链列(ConstraintSubset)。为什么叫鱼呢?因为它的英文名都是使用的鱼的一系列的名称。 1as1wCseEhbW9JyfEV6Hwte7e94TW+1XYq52zAIs7QDBq9cQx+niuWG0gRPc1e3i

点击中间区域
呼出菜单
上一章
目录
下一章
×