Sudoku Explained

进阶 约 6 分钟

当一个宫替整条线做了决定

这个数字在这个宫里的所有家,都挤在同一行上。于是这个宫占掉了这一行的名额——这一行的其余部分只好另找。

一句话版本

区块摒除是:在一个宫里,某个数字剩下的所有落脚点都落在同一行(或同一列)上。这个宫总得把数字放在这条线的某处,于是这条线的名额已经被占了——宫以外的格子不能再有它。

它是数独里最便宜的排除。一个数字、一个宫,通常连候选表都不用写。

形状

挑一个宫。挑一个数字。标出这个数字在宫里还能放的位置。

如果这些格子全在同一行,那么这个宫里的这个数字就在那一行上——不管最后是哪一格。同一列也一样。

两格在同一行叫「区块二」,三格在同一行叫「区块三」。格数不影响逻辑,只影响宫内的删除数量。

破坏图形的是一个「漏网的家」:如果宫里还有第四格也能放这个数字,这个宫就不再被锁在那条线上,什么都推不出来。

为什么成立

一个宫必须恰好包含每个数字各一次。这不是约定,这是「填满」的定义。

所以,如果宫里某个数字的所有家都在同一行,这个数字就落在那条行上、宫里那一段。这一行于是有了它的份额。一行只能有一个,所以这一行其他格子不能再放它。

推理短到真正的问题不是「理解不了」,而是「想不到去看」。区块摒除太便宜了,便宜到大家在找更漂亮的图形时,眼睛直接跨过了它。

真实盘面

在中上宫里,数字 1 只能放在 R3C4、R3C6,而它们都在第 3 行。也就是说第 3 行的 1 已经被这个宫占住了,第 3 行其它格子(R3C3)不可能是 1。

判断是:在中上宫里,1 只有两个家,R3C4 和 R3C6,而且都在第 3 行上。

一个数字、一个宫、一个排除——注意,全程没写候选数。你只问了「这个宫里的 1 能放哪」,这个问题用眼睛就能回答。

怎么扫

区块摒除是按宫扫的,只要顺序对,它是盘面上最快的一轮。

  1. 取一宫,取一数字。 先从盘面上出现次数最多的数字开始,因为它剩下的家最少。
  2. 只问一个问题。 这个数字在这个宫里还能放哪几格?不要写候选,只数合法格子。
  3. 看线。 如果答案全都共处一行,就顺着这一行、宫以外的部分找这个数字并删掉;共处一列就顺列找。
  4. 然后才看另一个方向。 如果这些家不共线,同样的格子仍可能是从行角度看过去的行列摒除——但那是另一个问题,需要单独扫一遍。
  5. 往下走。 九宫乘九数字是八十一道很便宜的题,多数一秒钟就答完了。

一个实用细节:区块摒除在快填满的宫里产出最高。只剩两个空格的宫,每个数字最多两个家,共线几乎是自动满足的。区块二就住在拥挤的宫里。

区块摒除 vs 行列摒除

两者都是宫线互斥,是同一个事实从两头读。

区块摒除从宫出发往外打,行列摒除从行列出发往里打。把两者搞反,就会在错误的单元里删候选,而这是把一张可解的盘面弄成不可解的常见方式。

行列摒除,往里那个方向。

陷阱

一个漏网的家。 宫里有三格排成一行,只有当这个宫再没有第四个家时,它才是区块三。共享线以外随便哪一格能放这个数字,整个论证就废了——而这一格很容易被漏掉,因为它可能待在宫内一个不起眼的角落。

方向反了。 在宫里找到图形,然后从宫里删。宫是这个数字必须落下的地方,宫没有什么可以让出来的。所有排除都在宫外。

跟唯一数搞混。 如果宫里这个数字只有一个家,那是隐性唯一数,该填数,不该删候选。区块摒除至少需要两个家。

用在哪

盘面一卡住,第一个该查的就是区块摒除,排在所有需要候选表的技巧前面。每个宫几秒钟,它能独立解决掉相当多的中等题目。

它也很会接力:一个区块摒除的排除,经常在被影响的那条线上立刻造出一个隐性唯一数,于是一张卡住的盘面会因为一次便宜的删除突然打开。如果区块摒除什么都没删出来,那也是有价值的信息——盘面是真的卡住了,该写候选数了。

常见疑问

什么是区块摒除?

某个数字在一个宫里剩下的所有位置,都在同一行或同一列上。因为这个宫必定在这条线上放一个该数字,所以这条线上、宫以外的格子不能再有它。

区块摒除和行列摒除是一回事吗?

不是,方向相反。区块摒除是从宫往外推到线;行列摒除是从线往里推到宫。两者合起来叫「宫线互斥」。

区块摒除需要完整候选表吗?

不需要。你只要知道一个数字在一个宫里能放哪几格,而这往往不用动笔就看得出。所以它是盘面上最便宜的高级动作。

为什么叫「区块」?

因为那一组格子挤在一起、指向同一条线。名字描述的是形状,不是逻辑。