术语Fish代表了一组工作原理相同的关于特定候选数的解题技巧(Fish技巧直接产生自数独规则——每个单元内的数字都不能重复),Fish家族成员包括“体型”从小到大的X-Wing、Swordfish、 Jellyfish、Squirmbag、 Whale以及Leviathan(后三者在人工解题过程中很少用到,本篇不做展开),以及由标准Fish结构延伸出来的Finned/Sashimi Fish。
X-Wing——若数字A在某两行(列)中只能存在于相同的两列(行),则这两列(行)的其他格都不能有A。
其原理很简单,如图1所示,我们将数字A只能存在于两个位置的行(列)称为base集(黄色),把与之垂直方向的列(行)称为cover集。显然,根据数独规则,在Base集中要吗是红色的一组A成立,要吗是蓝色的一组A成立,无论哪个颜色的A成立,都可以相应删去cover集行或列中其他格(橙色区域)的数字A。在具体操作时,大家可以将步骤简化为,在数独盘势中寻找一个数字A的2行×2列的矩形,若A在某个方向(横、纵)的行、列中只能出现于两个位置,就删去与之垂直方向的行、列中其他格的数字A。
图1 X-Wing01来看下面的实例。图2中数字5在R2和R5行中均只能存在于C5和C8列,则R2和R5的5构成Base集, C5和C8列的5为cover集,可删去cover集其他格中的的5(红色)。
图2 X-Wing02图3中数字1在C1和C5列均只能存在于R2和R5行,base集=C15{1}, cover集=R25{1}, 可删去cover集其他格中的1(红色)。
图3 X-Wing03Swordfish——若数字A在某三行(列)中均只能存在于相同的三列(行),则这三列(行)的其他格都不能有A。
图4 Swordfish01本篇开头已经提到,Fish家族的解题技巧都有着同样的工作原理,只是“体型”大小不同。X-Wing是2行2列2×2的矩形,Swordfish则将其扩展到3行3列。如图4中,黄色行列为base集(数字A在该单元仅能出现于3个位置),与之垂直的方向为cover集。根据数独规则,数字A在这个3行3列的矩形中,必然是每行每列出现且仅能出现1次,故可删去cover集中其他格内(橙色区域)的A。
需要注意的是,在Swordfish结构中,base集每个行列的A未必要出满3个位置,如下图,只要满足3行3列,且base集中的A在垂直方向只能出现于cover集内,依然是有效的Swordfish结构(其他Fish结构同样如此)。
图5 Swordfish02来看两个Swordfish的实例。
图6 Swordfish03图6中,数字2在R2、R3和R9中(base集),均只能出现C1、C5和C8列(cover集),则可删去cover集其他格内的2(红色)。
图7 Swordfish04图7中,base集=R247{4},cover集=C235{4},可删去cover集红色的4。
Jellyfish——若数字A在某四行(列)中均只能存在于相同的四列(行),则这四列(行)的其他格都不能有A。
Jellyfish进一步将Fish结构扩大到4行4列,我们直接看实例。
图8 Jellyfish01图8中,数字7在R3、R4、R6和R7(base集)中,只能出现于C1、C2、C5和C9(cover集),可删去cover集其他格的7(红色)。
图9 Jellyfish02图9中,base集=R1367{7},cover集=C2589{7},删去cover集其他格内红色的7。
Finned/Sashimi Fish
大家都知道六书中有“指事”一法,“指事者,视而可识,察而见意”, 如“刃”字是在“刀”的锋利处加上一点,以作标示;“凶”字则是在陷阱处加上交叉符号以作提醒。数独解题技巧中的Finned/Sashimi Fish与造字法中的“指事”有着异曲同工之妙。我们来看一个例子:
图10 X-Wing上图是一个标准的X-Wing结构,可删去C3、C5中红色的9。但是,如果X-Wing这条鱼在base集多出来一条鳍(fin)怎么办,比如在R2C1格中加上1个9,变成图11这样:
图11 Finned X-Wing我们可以这样推导:1)如果R2C1中多出来的9不成立,则局面变为图10中的标准X-Wing结构,可删去R3C3、R5C3、R5C5中的9;2)如果R2C1中的9成立,则可删去与之同一单元的R2C35、R3C3中的9。结合上述两种可能,可以发现,无论R2C1中的9是否成立,都可以删去R3C3中的9。
直观来看,多出来的fin将Fish结构cover集的删减范围限制在它所在的宫中,起到了“指事”法标识、定位的作用,我们把这种多长了鳍的Fish结构称为Finned Fish。
再开看一个Finned/Sashimi X-Wing的例子:
图12 Finned/Sashimi X-Wing图12中C3和C6为base集,R3和R7为cover集,C3列R89中的两个3为fin(大家需要注意,虽然本例的X-Wing中,若去掉R89C3的两个3之后,C3列可以直接出数,但它仍是个标准的X-Wing结构,因为它严格符合X-Wing的定义:数字A在某两行、列中只能存在于相同的两列、行。我们把类似这种base集中某个位置已有确定的其他数字填入——即原有的Fish少了一部分的结构称为Sashimi Fish)。可删去fin与cover集共同作用格亦即本例中R7C1格内的3。
下图是一个Finned Swordfish的例子,base集=C159{7},cover集=R357{7},R1C9的7为fin,可删去fin与cover集共同作用格R3C7内的7。
图13 Finned Swordfish下图是一个Finned/Sashimi Swordfish结构(注意本例的情况与图12相似),base集=R269{2},cover集=C258{2},R6C4的2为fin,可删去fin与cover集共同作用格R45C5内的2(红色)。
图14 Finned/Sashimi Swordfish最后在文末提供一个Finned/Sashimi Jellyfish的盘势供大家揣摩。
图15 Finned/Sashimi Jellyfish01
网友评论