Fish 代表了一组工作原理相同的关于特定候选数的解题技巧。Fish “体型”从小到大包括 X-Wing、Swordfish、 Jellyfish (以及 Squirmbag、 Whale、Leviathan 可以转换成前面的三种),衍生出来的还有 Fish Finned、Sashimi Fish,还有一个更高级的 Franken Fish。
X-Wing:若数字 X 在某两行(列)中只能存在于相同的两列(行),则这两列(行)的其他格都不能有 X。
x-wing01.jpg x-wing02.jpg看上面两张图,如果用链来看的话,其实这是一个特殊的摩天楼的双强链,绿色部分不能为 X,如果不用链,图中 4 个 X,先假设任意一个 X 为真,是不是绿色部分都不能有 X。
来看两个实例
bf201.png这个例子中 R2 和 R5 只有两个 5,而且都在 C5 和 C8,根据刚才我们的理论,R4C5 的 5(红色)可以删除。
用这个例子,我再来假设一次,R2 和 R5 里面的 5 至少有一个成立对吧,不然有一行没有 5 就不符合数独规则了。
1.如果 R2C5=5,那么 R4C5 不能是 5
2.如果 R5C5=5,那么 R4C5 不能是 5
3.如果 R5C8=5,那么 R2C8 不能是 5,R2C5=5,回到 1
4.如果 R2C8=5,那么 R5C8 不能是 5,R5C5=5,回到 2
R4C5 肯定不能是 5,假设 C5 或者 C8 还有 5 的话,一样的原理。下面的例子我就不解释这么详细了,这个还是很容易理解的。
再看一个例子
bf202.pngC1 和 C5 都只有 2 个 1,而且在 R2 和 R5,那么 R2 和 R5 其他的 1 都可以删除了。
看了上面的图和两个例子,可以发现这个原理里面候选数永远是一个矩形,形成一个 X。你们在填完候选数后,如果发现一个候选数在某一行(列)只有两个的时候,看看其他行(列)是不是有对应的候选数只有两个,形成一个 X,找到了就可以删数。
Swordfish:若数字 X 在某三行(列)中均只能存在于相同的三列(行),则这三列(行)的其他格都不能有 X。
swordfish01.jpg swordfish02.jpg看上面两张图,一个是标准的,一个是简化变形的。
我先解释一下第一张图的原理,9 个 X 的候选数,无论那一个 X 成立,是不是还剩下 4 个,是一个刚讲的 X-Wing 结构,再按照 X-Wing 的推论就出来了。
看一下简化版本的,我们还是随便一个 X 是真,是不是绿色的格子都不能为 X。
简化版本有很多种变形,但必须要满足那一行(列) X 的个数是 2-3,只有 1 个直接就能出来了,大于 3 个就不符合我们开始的定义了,所以X 的结构可以是 333 - 222 里面的排列组合。
来看两个实例
bf301.png候选数 2 在 R239 大于 2 小于 3 符合我们上面说的定义,而且在 C158 有关联,所以 C158 其他的 2 可以删除,图中红色部分。我们一般把 R239 叫做 Base,C158 叫做 Cover。
bf302.png候选数 4 Base 在 R247,Cover 是 235,所以 Cover 上的其他 4 都可以删除。
Jellyfish:若数字 X 在某四行(列)中均只能存在于相同的四列(行),则这四列(行)的其他格都不能有 X。
原理就不推论了,你们应该能自己推出来。
直接看例子
bf401.png候选数 7 Base R3467,Cover C1259,删除 Cover 的其他 7(红色)
bf402.png候选数 7 Base R1367,Cover C2589,删除 Cover 的其他 7(红色)
怎么找 Fish 结构
在填候选数的时候,你们可以看一下行(列)中某个数字的个数,比较容易的还是 X-Wing 和 SwordFish,JellyFish 还是挺难发现的,至少我只用到过一两次。如果填候选数没有发现,我一般会在填完候选数后,截一张图,把还剩中等数量的候选数(3-5)个数字没填的那种画一次圈圈,画完后比较容易看到(推荐 iPad 的那支笔,真的优秀)
高级 Fish(变异的 Fish)
鱼是一种很神奇的技巧,但是往往在出现的时候,并不是那么频繁,而往往会多出来一点点。这也就产生了两种变异类型。
Fish Finned
我们用例子直接说明
fbf201.png上图中候选数 9 比 X-Wing 结构多出来一点东西,看蓝色的 9,这个时候 Fish 怎么用呢?
我们还是来做推论
R2C1 = 9 那么 R3C3 的 9 可以删除
R2C1 != 9 那么 绿色的 9 还是一个标准的 X-Wing,R3C3 的 9 也可以删除
多出来的这个 9,叫做 Finned,中文一般叫做鱼鳍,他的作用是把 Fish 的删除范围限定在来 Finned 的宫内,所以上图这个结构,我们只能删除 R13C3 的 9,R1C3 已经有数字了,只有 R3C3 可以删除。
再看一个 SwordFish 的例子
fbf301.png蓝色的 7 是 Finned,让这个 SwordFish 的删除范围限定在 B3
再来一个 JellyFish
fbf401.png看鱼鳍和可以删除的部分
Sashimi Fish
刚我们说了Fish Finned,那这种结构是不是还能简化呢?当然是可以的,但这个鱼的结构就更加奇怪了,而且变化多端,先看一个标准版本
sbf202.png如盘面所示。这里有一个类似于 Fish Finned 的形状:Base 为 C28,Finned 位于 R4C8。但是又有点不一样的地方,在 Finned 宫内 X-Wing 的那只“腿”不见了,不过没关系。
根据 Finned 的推理方法,要么 Finned 成立,要么 X-Wing 成立。
现在 X-Wing 少了一个数字,我们来看看怎么推论。
假设 Finned R4C8 != 7,那么 R8C8 = 7,R6C2 = 7,R6C7 != 7
假设 Finned R4C8 = 7,那么 R6C7 != 7
所以红色的 7 一定可以删除
这种结构就是 Sashimi Fish
在看一个例子
sbf203.pngR23C6 的 9 作为一个 Group 的 Finned,大家可以想一想。
在 X-Wing 的结构里面,无论是 Fish Finned 还是 Sashimi Fish 其实都可以用双强链的摩天楼来删数字,看过前面双强链的朋友可能觉得用摩天楼更加简单,但到 3 个数或者 4 个数字的时候,摩天楼就很难用上了。
来看 3 个数字的
sbf301.png还是一样的推论,Finned 成立或者 SwordFish 成立,Finned 只是把删除范围限定到了 Finned 所在的宫内的 Cover 集
看看 4 个数字
sbf401.pngBase R1469{8},Cover C1289{8},Finned R9C3{8},删除集限定在 B7 中的 Cover 集,也就是 R78C12
Franken Fish
前面我们讲了鱼的带鳍变形,其实它的形状也是可以变异的。
来看一张图
frankfish01.jpg这张图还是一个标准的 SwordFish,只是移动了 SwordFish 的 Cover 集,最右边两列在同一个宫里面
我们再改动一下,变成下图
frankfish02.jpg绿色部分是不是还能继续删除呢?
我们还是继续假设
无论 B3 中的 C7 任意一个 X 为真,还是 B3 中的 C8 任意一个 X 为真,还是 那么 R5 和 R8 剩下的 4 个 X 还是一个标准的 X-Wing,绿色部分都能删除。
B3 中 C7 和 C8 6 个格子必须要有 X,要没有那么 B3 就没有 X 了,不符合数独规则。
所以绿色部分的 X 还是可以删除的。
当然,这个结构也是可以简化的,最简形式如下图
frankfish03.jpg这个的原理我相信你们自己也可以推出来的
还是看例子吧
ffbf301.pngBase = R34B9{1} Cover = C489{1},可以删除 C489 其他的 1
最后还有两个例子,大家自己揣摩一下。
ffbf401.png ffbf402.png例子的参考链接
最后广告时间
如果你是 iOS 系统,可以下载我做的 App 来训练这些技巧,专家难度一定会让你用上这些高级技巧的
或者去 Appstore 搜索 禅数独
image
网友评论