进阶 约 6 分钟
当一条线花掉了某个宫的配额
这一行里这个数字的所有家都在同一个宫里。这一行会替这个宫供上配额——所以这个宫不能再从别处拿这个数字。
一句话版本
行列摒除是把区块摒除倒过来读。某一行或某一列里,某个数字剩下的所有家都落在同一个宫内。这条线必须在这个宫里放数字,于是这个宫的配额已经供上了——宫在线的外面,不能再有这个数字。
同一个事实,相反的方向。区块摒除从宫里射出去,行列摒除往宫里射进来。
形状
挑一行。挑一个数字。标出这个数字在这一行还能放的位置。
如果所有标记都在同一个宫里,这个宫就被「供掉」了。这一行会把数字放在那儿,也就是说这个宫已经有它的份,那么宫的其余部分——这一行以外那些格子——不能再放这个数字。
列完全一样:某一列里这个数字的所有家都在同一个宫,宫里其余格子就把这个数字划掉。
为什么成立
每个宫恰好包含每个数字一次,每一行也恰好包含每个数字一次。两个约束都是绝对的。
如果一行里所有能放数字 X 的位置都在宫 B 里,那么 X 就落进宫 B。宫 B 于是有了它的 X。一个宫只能有一个,所以宫 B 的其他格子出局。
注意这个论证从头到尾没有确定这一行的哪一格填 X,只确定了「不管是哪格,反正都在这个宫里」。这已经够了,因为结论是关于宫里剩下的格子,不是关于这一行的。
真实盘面
判断是:在第 3 行里,7 只有两个家,R3C1 和 R3C3,而且都在左上宫里。
- 第 3 行里还能放 7 的空格就是这两格。
- 两格都在左上宫,所以第 3 行会把这个 7 放在这个宫里。
- 这个宫于是已经有了 7,R1C1 不能是 7,删掉。
这跟从另一头看过去是完全同一个图形:同样三格、同样的围困、相反的结论。一种读法是宫在约束行,另一种读法是行在约束宫。
怎么扫
行列摒除是一行一行扫的,比区块摒除慢,也更容易被跳过。还是要扫——它能捞到区块摒除看不见的排除。
- 取一行,取一数字。 先扫行,再扫列,同样是一到九的走法。
- 问这个数字在这条线上能放哪。 数一数合法格子。超过三个,行列摒除基本帮不上忙,可以直接跳过。
- 看宫。 如果这些格子全在一个宫里,就把这个宫的其余格子里的这个数字删掉。
- 列再来一遍。 一个数字可能在某一行被供掉了,在某一列却还自由,反过来也一样。两遍不是重复。
- 留意两种摒除的互动。 宫里的一个行列摒除,常常在另一个数字上造出一个新的区块摒除,然后又造出别的排除。这个来回推的过程,就是中等题目崩塌的方式。
高产的情形是:一条线上只有两三个落脚点,而且挤在宫的一头。如果一行里这个数字的候选散在两个宫,那什么都推不出来。
行列摒除 vs 区块摒除
宫线互斥的两半,区别只在这一点:
| 证据 | 排除在哪 | |
|---|---|---|
| 区块摒除 | 数字被限制在宫内某条线上 | 这条线上、宫以外 |
| 行列摒除 | 数字被限制在某条线上的某个宫里 | 这个宫里、线以外 |
同一个数字可能在同一个盘面上、不同的宫里,同时具备两种图形。谁都不比谁强,它们只是看见了同一个约束的不同后果。
最典型的错误,是把区块摒除的逻辑套到行列摒除的形状上:你发现一行的家都在一个宫里,然后从这一行里删——这是没有依据的,早晚会和盘面冲突。
陷阱
家跨过了宫的边界。 一行里三格,两格在这个宫、一格在隔壁宫。不成立。条件是全部的家都在同一个宫里,「几乎全部」一文不值。
忘了扫列。 行列摒除通常被当成「行的技巧」来教。列被供掉的频率一样高,只扫行的人等于把一半排除留在了桌上。
把它当成填数。 和区块摒除一样,它只删候选,不告诉你这个数字在这条线上落哪一格,也从不直接填出一个数字。
用在哪
行列摒除加区块摒除,是中等数独里每秒收益最高的两个动作。它们不需要候选表——只要数一个数字在一条线上能放哪——而且它们能解开那些看起来真的卡死了的题。
如果九个数字、两个方向全扫空了,这是一个可靠的信号:盘面已经越过便宜技巧的阶段,该写候选数了。从那儿往上走,通常是显性数对或隐性数对,两个都需要候选表。
常见疑问
什么是行列摒除?
某一行或某一列里,某个数字剩下的落脚点全在同一个宫内。这条线必须在这个宫里放该数字,于是这个宫不能再在线的外面放它。
它和区块摒除有什么区别?
方向不同。区块摒除从宫出发,往宫外的线删;行列摒除从线出发,往宫里删。两者都是宫线互斥。
行列摒除一定是两格或三格吗?
不一定。这条线上还剩几个位置就是几个,只要它们都落在同一个宫里。两个很常见,三个会出现,四个罕见但依然成立。
同一个数字可能同时有区块摒除和行列摒除吗?
可能,而且两种排除会叠加。所以下结论之前,两个方向都要查。