小灰的数独迷你课堂第九讲——fish基础篇

修改于2021/05/062922 浏览攻略
前言:fish是一系列原理相同的技巧合集名称,它的种类非常多。。。还有各种变形。比较复杂的情况其实对于一般玩家是用不上的,因为这种例子很少见,而且不好找!!!老实说我甚至考虑有没有必要介绍复杂的情况,我也不会用。这种情况的候选数是非常多的。。。所以我为什么一定用这种技巧解题呢。。。(因为用其他策略一般是可以消掉一些候选数的)我个人觉得高阶的fish是计算机使用的。因为我不会,所以后面部分介绍的话也点到为止。
顺便说一下,fish是针对单一候选数使用的。
1. X-Wing
若数字 X 在某两行(列)中只能存在于相同的两列(行),则这两列(行)的其他格都不能有 X。
TapTap
我们发现5在r25仅出现2次,并且他们都在***两列。因此可以使用X-Wing,删掉r4c5的候选数5.
如果我们用链的角度解释:R2C5{5} == R2C8{5}—R5C8{5}== R5C5{5}
(我前面说过强链可以作为弱链使用,为了满足强弱交替的原则,R2C8{5}==R5C8{5}这里降级为R2C8{5}—R5C8{5})
此时R2C5{5} == R5C5{5},换句话说R2C5 R5C5其中一个必须填5,而他们都在c5,所以r4c5一定不是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
TapTap
一样的情况,我就不解释了。就是一个是行一个是列。
怎么观察X-Wing呢。总的来说他就是一个矩形。(找矩形在技巧中很常见)注意那些单一候选数形成的矩形,并且有两条边框很干净。(就是强链)为什么叫X-Wing,也是因为两个对角相连就是X。
鱼和数组一样,也是有规格(阶)的,这个鱼的规格是涉及两行两列,因此被称为二阶,一般我们称这种结构叫做二阶鱼(不过一般叫X-Wing)。这个鱼的阶(Order/Size)跟数组的阶差不多,鱼的阶指的是涉及的定义域区域总数。比如这里涉及的定义域区域是两个:c1和c5,所以是2阶的。
定义域(Defining Set/Base Set):结构被定义下来的位置,比如这个例子里,定义域为c15(因为我们发现c15里填入1的位置只有四格,所以称这种东西叫做定义域)。
删除域(或者叫删数域,Secondary Set/Cover Set):能删除候选数情况的区域,比如这里的r25就是这个鱼的删除域。
2. 三链列/剑鱼(Swordfish)
跟数组一样,也可以一直有高阶。
若数字 X 在某三行(列)中均只能存在于相同的三列(行),则这三列(行)的其他格都不能有 X。
TapTap
原理是和前面一样的,我就不详细解释了,可以自行仿照前面的解释来试试看。
这里需要说明的就是,上面的例子看起来似乎少了点东西?原先是4个数的矩形,现在按理说应该是3*3的形式?这种情况被称为鱼的残缺(Incompleted)。实际上逻辑上是没有问题的,简化版本有很多种变形,但必须要满足那一行(列) X 的个数是2-3,因为只有1个直接就填了。。。而大于3个就不符合我们开始的定义了,所以X的结构可以是333 - 222里面的排列组合
TapTap
一样一样的。
3. 四阶鱼(Jellyfish)
若数字 X 在某四行(列)中均只能存在于相同的四列(行),则这四列(行)的其他格都不能有 X。
TapTap
不过和数组类似。。。高阶的fish不好发现。而且和数组一样,fish也是有互补性的。就是说有5阶的fish那么一定可以找到对应的4阶的fish。上面的例子你仔细看看含有7的白色的格,就是5阶的fish。虽然有专门的名称。。。但是没有用。
五阶鱼:Squirmbag/Starfish(海星)
六阶鱼:Whale(鲸鱼)
七阶鱼:Leviathan(海怪,传说里的海中之妖怪)
八阶鱼???你想想一共9行列,八阶鱼不就是排除法了吗。。。
下面介绍一种思想。
降维(Dimension Reduction):专用于鱼的技巧里,表示一种思维方式,将里面的行/列转换为单元格,所有这个行/列下的九个单元格转换为候选数1到9,然后把每个填数位置比作是一个候选数序列。当这样的候选数构成数组时,也可以表示为原本的鱼是成立的。
我们试想一下,如果我们把一个盘面看作是一整个区域X(即一行或一列),然后把盘面的一行或一列看作是这个区域X的一个单元格,然后把一行或一列的一个单元格看成X里一个单元格的一个候选数。看下面例子。
TapTap
我们已经知道定义域是r239.现在我们把行看出是一个格,在r2有2出现的格是r2b15,那么我们把它看做是第二格中候选数有15.同理第三格候选数是58,第九格是候选数18.现在该情况转变为158数组。根据数组的逻辑,我们可以删掉其他格的候选数158,意思就是删除c158中是候选数2.
降维的思想比你想的有用,你把9*9的格变成了9个格,其实熟练的话用fish就和用数组一样了。(只考虑这种标准的fish。。。)
习题1;
(这种习题我都是用软件随机生成的,如果与哪个题一样,真是巧合,虽然概率应该很低。后面不特殊说明了)
TapTap
找出可以使用X-Wing的地方。
习题2:
TapTap
找出可以使用Swordfish的地方。(我随机生成了半天。。。因为大部分都是变异的)
就这样吧,后面我看看要不要介绍变异的fish。。。
答案见回复,附上总集篇链接。
23
16
10