排除
Crosshatching
最后更新于
Crosshatching
最后更新于
排除(Crosshatching),也叫排除法,是数独里最常见的一种技巧。按照游戏具备的行、列、宫三大要素,排除也会分为这样三个类型。
排除早期也被称为摒(bìng)除,一般认为是台湾地区引入数独的时候传入大陆的说法。后续还有一些技巧也会沿用台湾的叫法称呼,到时候也会说明一下。
我们把顺序调整一下,先来说说宫排除(Crosshatching in Block)。
如图所示,我们把目光聚焦到第 7 宫里。
哦对,第 7 宫是左下角这个宫。宫的编号按照从左到右、从上到下的次序依次编号。最上层的三个宫分别为第 1、2、3 宫,中间层的为第 4、5、6 宫,而最下层的则是第 7、8、9 宫。左下角编号是 7,所以就叫第 7 宫。
另外,按照本教程的“尿性”,我们后续会一直使用 RCB 表达。因为
r
表示行,c
表示列,而b
表示宫,因此b7
可直接用于表示第 7 宫。后续我们也会使用这种方式来描述一些行、列、宫的具体编号。
我们需要遵守的数独规则里,其中一点是要求每一个行、列、宫都要有完整的一套 1 - 9。遵循这个规则我们深思一下。一个行、列、宫都有恰好 9 个格子,而完整的一套数字 1 - 9 又刚好是 9 种不同的数。那么我们安排每一个数出现一个放进去的话,就刚好用完了全部的 9 个单元格。因此,一旦中间出现重复的数字,那么那个重复的数字就会占用两个单元格及以上的名额,导致余下的 8 种数字无法再合理地安排进去了。换言之,必然会有一个数字最后无法填入其中,即保证不了完整一套 1 - 9 了。所以,完整的一套 1 - 9 暗含了一个意思:所有的数字不允许出现重复项。
按照这个说法,显然 b7
显然也不例外。我们发现,由于 r2c1
和 r8c9
都是 1 后,他们各自的所在行和列上都不允许再出现第二个 1 了,否则就违反了“不允许有重复项”的规则。正是因为此规则,图中打叉的位置都不能是 1。而纵观整个 b7
,就只剩下唯一一处可以填 1 的位置。因为 b7
没有 1,那么 1 必须出现在其中,因此我们只能把 1 安排在唯一的那一处位置上。因此我们就得到了 r9c3 = 1
。
由于这个技巧的推理结论下在 b7
之中,所以我们把这个推理过程(我们所谓的“技巧”)称为宫排除,即通过排除得到宫内结论的一种手段。
如图所示,图中除了黑色的提示数外,我们还可以通过才学到的宫排除完整一些蓝色位置的填数。我们把这些蓝色的数字称为填入数(Modifiable)。填入数有些时候也可以参与推理过程,并不是说填上之后就放在那里“吃灰”了。当然,填入数最后会因为我们的推理顺畅而变得越来越多,因此部分填入数确实不一定会发挥它的推理的作用,所以这取决于你自己的灵活变通了。
在早期的教程里,填入数还被称为确定值。不过本教程暂时弃用这种说法,因为不够直观。
此时我们观察第 3 行(也就是 r3
)。我们可以明显观察到,第 3 行需要满足一套完整的 1 - 9 的话,只缺少 5 和 9 尚未填入了。
而只关注于 5 的话,我们可以明显发现,r9c2
是 5。因为同列不能填入重复的 5,因此身处同一列的 r3c2
自然就不能是 5 了。那么,由于 r3
必须拥有一个 5 的填入,因此填入 5 的机会只能给到 r3c8
。因此,图中的结论就是 r3c8 = 5
。
我们把这个技巧称为行排除(Crosshatching in Row),因为他的填数位置是在 r3
之中的。
下面我们来说说最后一种类型的排除。
如图所示,这一次我们把目光聚焦到第 8 列(即 c8
)。
我们发现,数字 7 没有出现在 c8
里,因此 7 必须填进去一个。随后我们发现,r1c2
已经是 7,所以同一行不能填入 7,所以与之同一行的 r1c8
自然就不能是 7 了。不过,还剩下三处打叉的位置,这又是怎么排除的呢?
其实这里我们只需要一个数就可以参与排除了。注意到 r4c7
。由于数独规则里,同一个行、列、宫里都不能有重复的数字。我们前面用到的只有行和列,这里我们要用到的是宫的排除因素。因为同一个宫也不允许有重复的数字,因此 7 出现在 b6
之中,也就意味着 b6
的别处都不能填入 7。所以,三处打叉的位置都和这个单元格同宫,因此他们都不能是 7。
这么一说,这个 7 的位置就比较明了了。c8
里此时仅剩下唯一一处填入 7 的位置:r2c8
。因此,它必须是 7。
我们把这个技巧称为列排除(Crosshatching in Column),因为结论下在 c8
。
另外,行排除和列排除在不那么需要强调行还是列的时候,也可以合并称为行列排除(Crosshatching in Line)。
下面列举一些常见的、关于排除技巧的问题。这可能对你初学排除技巧有所帮助。
为了更加详细地解释这个问题,我们使用前面行排除的题目给大家解释一下问题问的是什么。这个问题也是经常有朋友询问我的一个问题。
如图所示。这就是刚才的那个行排除的题。有些朋友会问,我们使用了行排除的推演逻辑,用到的是下方 r9c2
处的 5。这个 5 虽然可以得到 r3c8 = 5
的推演结论,但是凭什么 r1c8
就不能是 5 了呢?
我个人觉得,问出这种问题的朋友具有发散的思维,这是好事。但这里我们并未对 r1c8
是否是 5 作出任何的推断。相反,数独的三大约束条件:行、列、宫的重要性是等同的。我们知道宫的逻辑后,就很容易思维转不过来,而在看行列排除时,误用或错用宫的逻辑去思考它,导致推断逻辑的混淆。显然,这里 r1c8
是否是 5 并不重要。我们观察的点始终都在 r3
上。
而从另一个角度来说,有些朋友更希望使用反证法的思维去推演矛盾,进而得到假设错误的思路。套用在这里也是可行的。比如我们反过来思考这个地方。如果我们让 r1c8 = 5
,那么因为 r3c8
和 r1c8
同宫(也可以理解为同列),因此 r3c8
就不能填 5 了。而它不能是 5,同行还剩下唯一一处空格 r3c2
也会被最下面 r9c2
的 5 给排除掉,这导致了一个问题:r3
将不存在任何空格填 5。而它必须填有一个 5 以满足一套完整 1 - 9 的规则。所以这不就矛盾了嘛。因为假设的是 r1c8 = 5
,所以假设不成立,故 r1c8
它不能是 5。
这种理解也没毛病,但这稍微绕了一些。我仍然推荐用正向的思路去理解这个问题。
总之,数独是一个严格的推理游戏,一旦有一个环节有错误的推断,那么后面必然就会产生矛盾。
这个问题其实存在一个非常具有说服力的原因:因为宫的观察更简单。
虽然宫是数独所独有的一种概念(你想想看,别的表格类型的谜题玩法是不是一般都只有行和列两种要素),所以相对于其他谜题玩法来说,数独的宫的因素更为陌生。初学肯定是比较难受的。但是,它的外观是 3 × 3 的正方形形态。不论放在盘面的哪一个位置(左上角也好、右下角也好,中间也好,两边也好),似乎这个正方形的形状都不会因为放的位置而变化。
这个的好处在于,它更容易被我们的人眼所聚焦。所有的 9 个单元格分布在比较紧凑的一坨里,这反而让我们觉得宫的聚焦更加容易。剩下的就是数空格的填数缺少什么,以及走外面找“外援”(排除项)了。然后我们再反过来看行列排除。行列排除最致命的问题是,它是 1 × 9 或 9 × 1 的长条形状。但凡盘面稍微大一些(物理层面的大——像素点更多、图片更大之类的),我们的人眼就必须尝试去从上往下、从左往右扫描一遍完整的 9 个格子,才能得到缺少的数字。
而缺少的数字有些时候会比较难以得到。因为数数稍微慢一些的朋友会觉得,缺少的数字需要我们大脑里临时记一下,而本身长条形状的 9 个单元格会让我们做起题来潜移默化增大了难度——又要临时记忆,又要横纵大幅度扫描。这便是行列排除比较致命的问题。所以,它的推理逻辑都不难,难的点仅在于观察上。
我在建议你做题的时候,也使用先宫排除,后行列排除的方式来完成。在迫不得已的时候(例如题确实没有宫排除的可用结论,或实在是找不着宫排除的时候),再来找行列排除;灵活变动你的推理思维,这是最重要的。
这是第一个讲解的数独技巧,因此需要给大家介绍一下,做题的一些方式和套路,以便在你不熟悉数独的时候也有一个下手的切入点。
数独虽然看起来难,它满篇都是数字,但它的题目在平时我们不论在 app 上,还是网上找到的打印的题目,都并不难。从最入门的技巧开始,排除都是我们的必经之路,因此,排除肯定是最常见的数独技巧,这样的题目也肯定占比更多。
这并不是说数独没有难题。但数独现阶段作入门来讲,排除肯定是最基础的技巧,所以不论难度怎么划分,只要是入门级的题,就势必可以只用排除技巧完成。我们不要拘泥于某个达成的目标,比如做题的耗时什么的。先从 0 到 1,再尝试从 1 到 10,再从 10 到 100。这个循序渐进的过程是必须有的。初学数独的时候,哪怕只用宫排除的题目,做 20 分钟甚至更多时间的朋友大有人在,而如果你一旦熟悉了这个技巧,那么提速就会非常快,甚至进入 10 分钟、5 分钟,甚至 3 分钟以内。我们一定要有耐心。
这是第一个要说的。第二个要说的是,我们怎么去找切入点。我拿一个例子给大家介绍一下,我是怎么做题目的。
如图所示。我们要想完成它,就需要找一个切入点。我们刚才学到的排除,不论是宫还是行列排除,全都是只跟单一的数字有关的技巧。那么我们尝试按数字,将提示数分为 9 种不同的阶段来逐一完成;如果发现某一个数无论如何也完整完成不了,也别灰心,可能题就是这么设计的,那么跳到下一个数继续做就行了。
举个例子。这个题目我们先从数字 1 切入,看看 1 的分布都有哪些位置。很明显我们发现到,第 3、6、7 宫还没有填 1。刚才我们说我们优先找宫排除,所以我们就按第 3、6、7 宫的次序逐一击破即可。
RCB 表达可以简写。例如第 3 宫、第 6 宫和第 7 宫可以直接把数字拼在一起,简写为
b367
。这个用法后续可能会用到,到时候也会反复强调,直到我觉得你记住了它为止。
先看 b3
。我们发现似乎 b3
并没有合适的、关于数字 1 的结论,因为似乎 r1c7
和 r1c9
都可以填 1,那我们就跳过它,来看 b6
。b6
可以填 1 的位置只有 r4c9
。这很明显。
同理,b7
也存在可以填 1 的位置,将其填入。
所以我们连续填出两个 1 的位置。由于 b6
填了 1,所以整个盘面里还剩下唯一一处 1 的位置,把他填上即可。
这样一来,所有的数字 1 全部被我们击破。此时,盘面还剩下 8 种数字没有填了,我们继续填 2 即可。后面的数字就不再演示了。这个题的难度也不大,可以自己从头做一下。