伪数组(ESP)
Extended Subset Principle
最后更新于
Extended Subset Principle
最后更新于
在前面的内容里,我们知道跨区数组所需要满足的点一共有两点。第一点是格子数和用到的数字种类数量一致,第二点则是每个数只能最多出现一次。
而对于第二点,我们认为数组的定义范围下都是需要满足的特性。下面我们来看这个第二点不满足,却满足第一点的结构都应该怎么推理。
如图所示。可以看到,这个结构一共用了 5 个单元格:r5c2359
和 r6c2
。数一下里面的数字种类,一共也有 5 个:1、4、5、7、8。
这似乎基本满足了跨区数组的规则。但是很遗憾的是,这个例子里,五种不同的数字里,数字 7 出现了特殊状态:它跨区了。这里的跨区肯定说的是 7 不再满足最多填入一个的规则。很显然,我们完全可以安排数字 7 同时填在 r5c9
和 r6c2
上,这照样不会有问题。因此,因为数字 7 的特殊性,整个结构就不再满足第二点特征,所以它不是一个跨区数组。
但是,先别着急因为不是跨区数组就后悔错过了删数。这个结构仍然有删数。虽然 7 不满足条件,但 1、4、5、8 剩下四种数字确实是最多只能填一个的。由于题目里其他数字都只能最多填一个,所以结构里的数字 7 必须至少填一个。
有人问为什么。其实很简单,因为数字 1、4、5、8 只能最多填一次,所以四个数算上也最多只能占四个单元格。整个结构用了 5 个单元格,还剩下一个必须填的是 7。要不然你就填俩 7 进去,然后让 1、4、5、8 的其中一个数填不了也行,毕竟说的是 1、4、5、8 是最多一次。
总而言之,数字 7 不填结构放不满 5 个单元格,所以会有矛盾。所以 7 必须填至少一个。于是,结论就有了。我们按之前学到的类似 XYZ-Wing、WXYZ-Wing 那样的删数逻辑来看它就行。找所有 7 都“看”得到的地方。
显然,本题里只有 r5c1
满足条件,因此结论就是 r5c1 <> 7
。
我们把这个结构称为伪数组(Extended Subset Principle,简称 ESP),象征着它差点就满足跨区数组的规则了,但因为有一个“瑕疵”导致它无法按跨区数组的模式进行删数,但处于一种不是跨区数组却仍旧有删数的特殊状态。伪数组的英文名如果直译的话,是翻译成“数组原理拓展”,即拓展了数组的推理逻辑,衍生出来的技巧。
下面我们再来看一个例子。这个例子是 4 个单元格。
如图所示。这个例子就自己看了,逻辑完全和前面的一样。
下面我们来看一下,伪数组在行和列上的情况。
如图所示。数一下数字的种类数:1、2、3、4、6 一共有五种,再数数单元格数量:r1c156, r67c5
也是五个。非常 nice,它和之前的例子完全一样,只是把宫给干掉了,改成了行+列的组合。所以它满足跨区数组的第一点。
第二点呢?似乎只有数字 3 是可以填两次的,其他的最多就能填一次。那么我们也试试用伪数组的思路去理解,看看可不可以。
显然,数字 3 如果不出现的话,1、2、4、6 是不足以填到五个单元格里的,因为他们每一个数都最多只能填一次,所以伪数组的逻辑 OK。删数呢?删数也 OK,这个例子里的删数是 r2c5 <> 3
也是存在的。所以,这也是伪数组,只是把结构调了下位置。
前面我们介绍的都还算比较简单。下面我们来看分析起来稍微复杂一些的伪数组。
如图所示。仔细数一下单元格数和数字种类数就可以发现,这个例子直接就不相等了。数字种类数有 4、5、7、8 共四种,而单元格一共有 r1c15, r2c179
共五个单元格。
这连第一点都不满足了,这还咋推理啊。别着急嘛。我们来看看里面数字的跨区状态。显然,数字 4 和 5 这两种数字是最多只能有一个的,那么问题只出在数字 7 和 8 上:数字 7 和 8 他们最多能往里面填两个进去。
因为我们要填到 5 个单元格里去,强迫 4 和 5 都出现,那也还剩下三个空格未填。简单使用抽屉原理就知道,不论数字 7 填几次,数字 8 肯定都会至少有一次填入的机会的。因为三个单元格要填两种不同的数字,而数字 7 和 8 最多也就能填俩,而就算最多是两个,那保持三个单元格都能正常填数,势必数字 8 会出现至少一次。当然,数字 7 也是至少出现一次的。
所以,删数呢?因为数字 8 至少有一个,所以删数自然就是看所有的 8 都可以看得到的地方。于是,{r1c8, r2c6} <> 8
的结论就有了。这个题有关于数字 7 的结论吗?很遗憾的是,因为 7 比较特殊,它出现的位置比较多,导致它没有合理的删数,所以这个题只有关于 8 的结论。
那是否存在两种数都能删的情况呢?显然这个答案肯定是“是”。下面我们就来看一个这样的例子。
如图所示。这个例子里一共用了 6 个单元格:r456c9, r589c8
,数字种类数则是 1、3、4、7、8 共五种数字。显然,3、4、7 是不能跨区的,所以这三个数字最多只能出现一次。
而为了确保单元格放满全部的数字,所以极限一点,把 3、4、7 都填进去,也还剩下三个单元格要填数。所以,1 和 8 势必都会出现(至少一次)。不管是 1 也好,还是 8 也罢,随便哪个数字出现两次都无关紧要,所以,显然数字 1 和 8 肯定是可以用于删数的。
然后我们再来看删数,神奇的一点发生了。数字 1 似乎有删数,因为结构里用的四个 1 都可以看到的地方是 r4c8
和 r8c9
两处单元格;而数字 8 也有删数,因为结构用到的五个 8 都可以看到 r4c8
。所以,这个题的结论就是 r4c8 <> 18, r8c9 <> 1
。这便是同时可以删两种数字的伪数组的特殊状态。
至此,我们就把伪数组的内容介绍完了。