盘面23
如盘面23所示。当填到这里的时候,发现数对已经填不下去了。此时,我们可以观察到,在行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是翅膀的意思,就像一个展开的翅膀一样。它有一个独特的名称——四角对角线法则。
有意思的是,这种方法还能够拓展到三阶的情况。这也就是为什么它还有一个名字,叫作二链列了。
在盘面23的二链列中,我们将产生二链列的单元(图中的行A和行H)叫作定义域,表示二链列被定义的位置;并将需要排除候选数的单元(图中的列2和列6)称为摒除域或删除域,表示用于排除或删除该候选数的位置。
图中涉及假设的所有位置叫作鱼身,这到后面的鱼的变型中会十分常用。这样的结构我们称之为鱼或链列。为什么叫鱼呢?因为它的英文名都是使用的鱼的一系列名称。