数独高级技巧(4):Fish

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.png

C1 和 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.png

R23C6 的 9 作为一个 Group 的 Finned,大家可以想一想。

在 X-Wing 的结构里面,无论是 Fish Finned 还是 Sashimi Fish 其实都可以用双强链的摩天楼来删数字,看过前面双强链的朋友可能觉得用摩天楼更加简单,但到 3 个数或者 4 个数字的时候,摩天楼就很难用上了。

来看 3 个数字的

sbf301.png

还是一样的推论,Finned 成立或者 SwordFish 成立,Finned 只是把删除范围限定到了 Finned 所在的宫内的 Cover 集

看看 4 个数字

sbf401.png

Base 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.png

Base = R34B9{1} Cover = C489{1},可以删除 C489 其他的 1

最后还有两个例子,大家自己揣摩一下。

ffbf401.png
ffbf402.png

例子的参考链接

Single Digit Patterns

[数独高级技巧] 鱼

最后广告时间

如果你是 iOS 系统,可以下载我做的 App 来训练这些技巧,专家难度一定会让你用上这些高级技巧的

下载地址

或者去 Appstore 搜索 禅数独

image

你可能感兴趣的:(数独高级技巧(4):Fish)