小灰的数独迷你课堂第十一讲——fish的进阶篇

更新时间2021/5/61321 浏览攻略
前言:鱼是一种很神奇的技巧,但是往往在出现的时候,并不是那么频繁,而往往会多出来一点点。这也就产生了两种变异类型。。。这部分我没怎么用过,因为我遇到的只能用这些技巧才可以下一步操作,完全没有别的操作(比如找链)的情况很少很少。。。我也边学边写。所以这篇。。。我就是提一下。怎么使用我没有经验。
1.1带鱼鳍的二阶鱼(Finned X-Wing)
TapTap
上图中候选数9比 X-Wing 结构多出来一点东西,看蓝色的9,这个时候Fish怎么用呢?
我们当r2c1不存在,那么剩余结构是什么?那肯定是我们最为完美的二阶鱼。但是r2c1的存在,使得现在不能完美地运用了。但是,我们可以这么去想:
如果R2C1 = 9 那么R3C3的9可以删除。
如果R2C1≠ 9 那么绿色的9还是一个标准的 X-Wing,R3C3的9也可以删除
综上,这个r3c3的9是可以删除的。
下面我用链来解释(这就是我为什么不怎么用这些变形。。。直接链就完了)
TapTap
B1里我们把r2c13看为一个整体(9的非标准区块)它和r2c5的9是构成强链的关系的。(r2仅c135含有候选数9,因此r2中的9必然在c13或c5里出现,两个命题必成立一个)这样就很明显了,这是一个双强链,两端共同作用区域可以删除候选数9.注意,r2c13的9作用区域是b1,并非c13,所以是不能删掉r5c13的候选数9.(因为这个强关系并不能作用在b4。自己考虑看看这个区块是怎么来的)
这些瑕疵在鱼里称为鱼鳍(简称鳍,Fin),其中的r2c1(9),我们就称为鳍。表示长在鱼身上,又要影响推导结果的候选数。
注意,英文名“鳍鱼(Finned Fish)”之中的“鳍”含义为“带鳍的(Finned)”,所以采用分词性形容词形式。
还有需要注意的地方是,当鱼鳍成立的时候,只需要讨论它能删除的位置,即它的相关格的数字,此时并不会去关注整体鱼身到底发生了如何的变化,因为最终的删数是看删除域和相关格的交集。(换句话解释,看链的解释,这个区块作用范围就这样)
那么,如何能快速观察和推断到删数情况呢?你可以发现,r2c1的相关格组涉及三个区域:r2、c1、b1。R2和c1下,都不会和它不存在所形成的二链列的删除的单元格有任何的交集,而只有b1才有交集。所以,鳍和剩余鱼结构(即鱼身)的删数交集只能是宫内。(从链理解也可知道,这个区块是在b1形成的)
那么,鳍可以在一个技巧下存在几个呢?因为删除交集只能是宫内,所以最多也只能有2个。(看看这个链的解释,r2形成的区块最多也就只能三个格,也就是说最多把r2c2变成鳍。想想看,如果区块范围扩大,比如把r1c1也加上,那就不是强链了,因为之前区块的作用范围可以是r2和r2c5连,现在就只有b1了)
1.2带鱼鳍的三阶鱼(Finned Swordfish)
TapTap
有了前面的铺垫我就不解释了。原理一样,你去假设r1c9中填4还是7就行,或者链也可以解释,只不过这个链长一点。(两端是r3c1和b3的区块)因为鳍出现在b3,作用区域就是b3。其他删不了。
1.3带鱼鳍的四阶鱼(Finned Jellyfish)
TapTap
鳍出现在b6,作用区域就是b6。可以删两个。(这条鱼是从行来看,之前那个是列)
带鱼鳍的鱼的互补。
带鱼鳍的鱼也一样是互补的,但是这一点的证明我们无法从现有的知识来得到,所以证明就不给出了。
说明一下,鱼互补之后鱼鳍的位置依然不发生任何改变,删除的数字也一致。不过,在转变视角后,选取的定义域行和列是互换的关系。(就是之前是行的fish,现在就是列的fish 了)
关于带鱼鳍的鱼的观察方法与之前上一讲介绍的方法是通用的。(算了,我就不偷懒了,介绍吧)
鳍鱼和普通鱼的观察规则大部分相同,只有一点稍微不一样:矩形内可以含有该数的候选数情况的单元格(但是这样的单元格的个数是有限制的,具体什么限制我们将稍后提起)。
TapTap
寻找过程因为大部分都是相同的,所以找的过程我们就省略了,直接来看结论。如图所示。
可以看到示例里,一共有3处2的确定值,那么我们找的结构必须是行数加列数为6的矩形,此处我们找的是三行三列的矩形,符合要求。
不过我们发现了r8c3是含有候选数2的,那么,我们就可以这么思考了:
1.如果r8c3≠ 2,则矩形区域就不含任何的候选数2了,矩形成立,而且还印证了盘面一定存在关于2的普通的三链列;
2.如果r8c3 = 2,则它只能影响到它的相关格的2(即只能删除r8c3相关格里的所有位置的候选数2)。
而我们可以从最开始的定理知道,普通鱼产生的删数在矩形所在行列外的其它位置,所以我们就可以得到一个结论了:最终这个鱼的可能删数就是{r79c1, r9c2}(2)了。当然了,r7c1不含有2,所以删数是r9c12(2)。而实际上,这条鳍鱼确实是存在的,而且也符合我们的预期。
那么我们可以了解到的是,实际上这个含有候选数2的矩形的单元格r8c3实际上最后被转换为了普通视角的鱼鳍,而鱼鳍在一般层面下是最多只能两个的(在孪生鱼里可能有最多有四个,例如之前的例子那样。不过孪生鱼最终是可以被拆解称两个一般的鳍鱼的,所以实际上还是只有最多两个鱼鳍)。所以,我们找的矩形里最好不要包含三处甚至更多的候选数的单元格,这样会带来很大的麻烦,而且两处包含该候选数的单元格最好同一个宫,这样才符合我们最开始提到的普通视角的鱼的删数逻辑。
2.鱼刺身(外鳍退化鱼)Sashimi Fish
(这个名字怎么来的不知道,可能是这个fish为什么缺了一部分,因为一部分被做成了刺身。。。我YY的)
刚我们说了Fish Finned,那这种结构是不是还能简化呢?当然是可以的,但这个鱼的结构就更加奇怪了,而且变化多端。。。
2.1刺身二阶鱼(Sashimi X-Wing)
TapTap
看这个例子,原来fish应该是一个矩形,这里r7c3没了。。。不过不影响。
1.假设r89c3有一个3成立,那么r7c1的3肯定不成立。
2.假设r89c3都不是3,那么r3c3一定是3,r3c6一定不是3,那r7c6一定是3,那r7c1的3肯定不成立。
综上,r7c1的3可以删掉。
其实链就更好解释了,有了前面的基础,自己试着画下。还是把r89c3看作3的区块,因为这个区块作用在b7,所以能删的也只有b7内其他格的候选数3,而且这个链的两端是区块和r7c6,共同作用区域就只有b7的r7而已。
2.2刺身三阶鱼(Sashimi Swordfish)
TapTap
这里说明一下,这个fish缺少指的是大矩形的一个顶点(角)而不是中间部分,后者不是变形。(事实上,你假设一下就知道这种情况如果r6c4不是2,那么b5宫就不可能出现2了)
2.3刺身四阶鱼(Sashimi Jellyfish)
TapTap
能熟练的观察到四阶鱼的变形也很厉害。
在前面我们讲解了鱼的带鳍变形,但是它的形状其实也是可以变异的。(就是说。。。)
The techniques and examples on this page are meant for advanced players. Most sudokus would not need them.
附上原出处的提示,就是说这部分就是了解一些就好。。。(我就不解释了,知道有这个东西就好,可以自己去网上了解)
3.1 (Finned) Franken Fish(宫内鱼)
TapTap
我们之前基本上fish的主体就是几行几列的形式,但是Franken Fish是把其中一行或列变成了一个宫。(如图b7)(宫内二阶鱼完全等价于区块摒除法,所以最少我也只能举三阶的例子)和之前并没有本质的区别,如果用链来连接,相当于与这一宫进行连接。它还缺了一个角(r8c7)
3.2 (Finned) Mutant Fish
(好像没有正式译名)
TapTap
我简单说两句。。。之前是把一个宫看作一个整体。如果比较灵活的使用各种区块和宫呢?我不做解释,因为我看也费劲,而且没必要。。。因为这个技巧完全可以用别的技巧取代,我就是举个栗子。(事实上这个例子最简单的版本就是多宝鱼,后面我会介绍)
3.3 Siamese Fish
TapTap
如果是两条鱼同时存在呢?与之前的情况一样,这个技巧完全可以用别的技巧取代,我就是举个栗子。(你可以一条鱼一条鱼找,不放在一起看。这个例子最简单的版本就是摩天楼,后面我会介绍)
Fish终于游走了。。。我说了,后面的例子完全可以用别的技巧取代,我就不详细解释了。而且我这个水平用不上。。。我也看不出来。后面放松一下,来几个简单的双强链。习题就算了。。。太简单的版本就是双强链就可以解决,太难的版本。。。可以用复杂链解释。
附上总集篇链接。
14
3
5