Sudoku Explained

进阶 约 6 分钟

当一条线花掉了某个宫的配额

这一行里这个数字的所有家都在同一个宫里。这一行会替这个宫供上配额——所以这个宫不能再从别处拿这个数字。

一句话版本

行列摒除是把区块摒除倒过来读。某一行或某一列里,某个数字剩下的所有家都落在同一个宫内。这条线必须在这个宫里放数字,于是这个宫的配额已经供上了——宫在线的外面,不能再有这个数字。

同一个事实,相反的方向。区块摒除从宫里射出去,行列摒除往宫里射进来。

形状

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

如果所有标记都在同一个宫里,这个宫就被「供掉」了。这一行会把数字放在那儿,也就是说这个宫已经有它的份,那么宫的其余部分——这一行以外那些格子——不能再放这个数字。

列完全一样:某一列里这个数字的所有家都在同一个宫,宫里其余格子就把这个数字划掉。

为什么成立

每个宫恰好包含每个数字一次,每一行也恰好包含每个数字一次。两个约束都是绝对的。

如果一行里所有能放数字 X 的位置都在宫 B 里,那么 X 就落进宫 B。宫 B 于是有了它的 X。一个宫只能有一个,所以宫 B 的其他格子出局。

注意这个论证从头到尾没有确定这一行的哪一格填 X,只确定了「不管是哪格,反正都在这个宫里」。这已经够了,因为结论是关于宫里剩下的格子,不是关于这一行的。

真实盘面

第 3 行里,数字 7 只能放在 R3C1、R3C3,它们都在左上宫。所以这个宫里的 7 已经被第 3 行用掉了,宫内其它格子(R1C1)不可能是 7。

判断是:在第 3 行里,7 只有两个家,R3C1 和 R3C3,而且都在左上宫里。

这跟从另一头看过去是完全同一个图形:同样三格、同样的围困、相反的结论。一种读法是宫在约束行,另一种读法是行在约束宫。

怎么扫

行列摒除是一行一行扫的,比区块摒除慢,也更容易被跳过。还是要扫——它能捞到区块摒除看不见的排除。

  1. 取一行,取一数字。 先扫行,再扫列,同样是一到九的走法。
  2. 问这个数字在这条线上能放哪。 数一数合法格子。超过三个,行列摒除基本帮不上忙,可以直接跳过。
  3. 看宫。 如果这些格子全在一个宫里,就把这个宫的其余格子里的这个数字删掉。
  4. 列再来一遍。 一个数字可能在某一行被供掉了,在某一列却还自由,反过来也一样。两遍不是重复。
  5. 留意两种摒除的互动。 宫里的一个行列摒除,常常在另一个数字上造出一个新的区块摒除,然后又造出别的排除。这个来回推的过程,就是中等题目崩塌的方式。

高产的情形是:一条线上只有两三个落脚点,而且挤在宫的一头。如果一行里这个数字的候选散在两个宫,那什么都推不出来。

行列摒除 vs 区块摒除

宫线互斥的两半,区别只在这一点:

证据排除在哪
区块摒除数字被限制在宫内某条线上这条线上、宫以外
行列摒除数字被限制在某条线上的某个宫里这个宫里、线以外

同一个数字可能在同一个盘面上、不同的宫里,同时具备两种图形。谁都不比谁强,它们只是看见了同一个约束的不同后果。

最典型的错误,是把区块摒除的逻辑套到行列摒除的形状上:你发现一行的家都在一个宫里,然后从这一行里删——这是没有依据的,早晚会和盘面冲突。

区块摒除,往外那个方向。

陷阱

家跨过了宫的边界。 一行里三格,两格在这个宫、一格在隔壁宫。不成立。条件是全部的家都在同一个宫里,「几乎全部」一文不值。

忘了扫列。 行列摒除通常被当成「行的技巧」来教。列被供掉的频率一样高,只扫行的人等于把一半排除留在了桌上。

把它当成填数。 和区块摒除一样,它只删候选,不告诉你这个数字在这条线上落哪一格,也从不直接填出一个数字。

用在哪

行列摒除加区块摒除,是中等数独里每秒收益最高的两个动作。它们不需要候选表——只要数一个数字在一条线上能放哪——而且它们能解开那些看起来真的卡死了的题。

如果九个数字、两个方向全扫空了,这是一个可靠的信号:盘面已经越过便宜技巧的阶段,该写候选数了。从那儿往上走,通常是显性数对或隐性数对,两个都需要候选表。

常见疑问

什么是行列摒除?

某一行或某一列里,某个数字剩下的落脚点全在同一个宫内。这条线必须在这个宫里放该数字,于是这个宫不能再在线的外面放它。

它和区块摒除有什么区别?

方向不同。区块摒除从宫出发,往宫外的线删;行列摒除从线出发,往宫里删。两者都是宫线互斥。

行列摒除一定是两格或三格吗?

不一定。这条线上还剩几个位置就是几个,只要它们都落在同一个宫里。两个很常见,三个会出现,四个罕见但依然成立。

同一个数字可能同时有区块摒除和行列摒除吗?

可能,而且两种排除会叠加。所以下结论之前,两个方向都要查。