直观隐性数组
Direct Hidden Subset
隐性数对(Hidden Pair)

如图所示。我们使用排除的逻辑,看 b1 的数字 2 和 9,看看有什么说头。
我们发现,数字 2 在 b1 里只能填在 r2c1 和 r3c2 里,而数字 9 也恰好也只能填在这两个单元格里。倘若我们让 r2c1 是 2 之后,因为别处无法填 9 的缘故,此时就只有 r3c2 可以是 9 了;反之,如果 r2c1 是 9 的话,那么 r3c2 就得是 2,因为别处无法填 2。
我们把他们配对起来一起思考。它俩位于同一个宫里,这意味着什么呢?意味着这一个宫里填入 2 和 9 的机会只能落在 r2c1 和 r3c2 之中;而 r2c1 填一个数,r3c2 又填一个数,就把 2 和 9 名额给占满了。因此,这两个单元格就没有机会填入其他别的数字进去。刚好,我们发现其实 r3c2 如果不思考到这一层的话,它其实是可以填 5 的。但是如果有了这个约束后,就直接有了结论 r3c2 <> 5。
拿到这个结论后,我们再看 c2。我们发现,c2 里填入 5 的位置现在只剩下 r6c2。所以,r6c2 = 5 是本题的结论。
我们把这个技巧称为隐性数对(Hidden Pair),指的是 r2c1 和 r3c2 的 2 和 9 的排列。
RCB 表达里,如果出现多个单元格无法使用前文归并的方式整合在一起,可以使用大括号将它们括起来,表示一组单元格,如
{r2c1, r3c2}表示这两个单元格。另外,数字 2 和 9 依然可以使用小括号括起来。不过这次我们可以直接使用一个小括号,就可以括起来。所以上面隐性数对的 RCB 表达是
{r2c1, r3c2}(29)。至此我们就把 RCB 的全套规则全部介绍完毕了。之后我们会给各位列举一下它的一些详细规则。
下面我们再来看一则例子。希望各位这次能自己理解。

隐性三数组(Hidden Triple)
可能你会问我,文章不是介绍数组吗,为什么名字却是隐性数对而不叫隐性数组什么的。实际上是因为,和区块一样,数组在分了显性数组和隐性数组后,还有规格上的划分。前面我们学到的是数组里规格为 2 的情况,它是数组里最小规格的情况。下面我们来说一下隐性数组在规格为 3 的情况。

如图所示。和前面的解释逻辑相似,只是这次我们要一并用到三个单元格。
只看 b9,我们可以看到,数字 1 能填入的位置只有 {r8c78, r9c8} 三个单元格,而恰好的是,数字 2 和 3 也都恰好只能填入在这三个单元格里。
很明显的是,数字 1 必须在其中预留一个席位,2 和 3 也都需要预留一个席位,这样三个单元格就被全部占满。这样一来,这三个单元格就没有任何机会填入其他别的数字。和前文一样,在没有这一层的逻辑之前,4 是可以填在 r8c78 里的;而现在我们有了 r8c78 <> 4,利用这一点,数字 4 在 r8 就只能填在 r8c5 里。所以这个题目的结论就是 r8c5 = 4。
我们把图中的 {r8c78, r9c8}(123) 称为隐性三数组(Hidden Triple)。
隐性四数组(Hidden Quadruple)
下面我们来看规格为 4 的情况。在平时做题里,规格为 3 和 4 的情况相对比较少见,所以我们只看下用例即可,平时做题基本遇不到这些题目。

这次我们仍旧关注于 b9,不过这次我们得看四种数字 1、4、6、7。
只看 1 的话,通过排除我们可以得到,b9 里填 1 的只有 r89c79(即 r8c79 和 r9c79 的缩写)四个单元格里。而 4 只能填在 r89c7 里,6 只能填在 r89c79 里,而 7 只能填在 r8c79 里。
这里和前面略有不同了。四个数字落在的单元格各不相同。不过,这并不是很重要,因为我们的本质是在排列数字的所填位置。而可填位置更少的 4 和 7 退一万步来讲也就是可能排列的位置少一些。我们优先保证它们填上,然后再去填剩下的 1 和 6。那么我们这样就可以得到一个和前文完全一致的结论——1、4、6、7 刚好用完 r89c79 四个单元格的席位,导致其他数字都填不进去。
填不进去的意义在于,例如数字 8,它就没有机会放在 r9c79 了。那么再使用关于 r9 的行排除,我们就有了 r9c4 = 8 的结论。
我们把这个技巧称为隐性四数组(Hidden Quadruple)。
这样,隐性数组的规格为 2、3、4 的三种情况就讲完了。
RCB 表达的完整规则
下面我们针对于前面用到的所有 RCB 表达进行一轮完整的说明。
纯单元格表示
- 对于单个单元格:直接用 - r<行号>c<列号>表示,其中- <行号>和- <列号>替换为具体的行列编号;
- 对于多个单元格: - 如果它们的行一致,或它们的列一致,则合并它们的行或列(只写一次),并列举另一边的所有编号数值: - 如果合并后还具有相同的行号序列或列号序列,就还可以继续合并,直到无法合并为止; 
- 如果合并后无法继续合并,就直接用这个结果表示即可。 
 
- 如果它们的行号和列号都不一样,则直接用大括号括起来即可。 
 
带有涉及数字的表示
直接使用小括号把所有用到的数字括起来即可。
带有结论的表示
- 如果结论是得出一处单元格的填数(简称出数(Assignment)),则使用等号 - =连接单元格和数字;
- 如果结论是得出某一个单元格不能填入什么数字或一组数字(简称删数(Elimination 或 Deletion)),则使用不等号 - !=或- <>连接单元格和数字。
小练习
下面我们来一些小练习:写出它们的 RCB 表达。
- 单元格 - r2c3、- r2c5和- r2c9;
- 单元格 - r1c23、- r2c234和- r3c234;
- 单元格 - r1c3应填入数字 7;
- 单元格 - r2c56不应填入数字 2 或 6;
- 单元格 - r1c8的数字 1、2、3、5;
- 单元格 - r1c89不能是 8 或 9;
- 第 3 行; 
- 第 4 宫; 
- 第 2 列的全部数字 2。 
答案:
- r2c359
- {r1c23, r23c234},或者- {r123c23, r23c4}也行- 最好不要写成 - {r23c23, r23c4, r1c34},因为会多一项,可理解为数学上的“不是最简形式”
 
- r1c3 = 7
- r2c56 <> 26
- r1c8(1235)
- r1c89 <> 89
- r3
- b4
- c2(2)
最后更新于
