X-Wing 技巧
一旦你掌握了扫描、裸数对和隐性数对,大多数谜题都会很快被攻下。然而在一道更难的网格上,一切戛然而止:没有唯一数被逼定,没有简单数对能收窄任何范围,棋盘就那么僵在那里。这正是 X-Wing 为之而生的时刻。它是最早的几种真正基于图形的技巧之一,看出它,意味着你的解题水平实实在在地跨上了一级。本指南将讲清 X-Wing 是什么、它为何成立,以及如何运用它。
开始之前:你需要候选数
X-Wing 在脑子里是不可能看出来的。它建立在铅笔标记之上,也就是你在每个空格里写下的小小候选数,用来记录哪些数字仍可合法填入那里。每一种中级技巧,X-Wing 也不例外,其实都是关于这些候选数如何在网格上排列的一句陈述。所以在你动手搜寻之前,先确保每一个空格都显示出它的候选数。在 Samuraiku 里,你轻点一下就能开启铅笔标记,而当有 X-Wing 可用时,它的提示会点出这个技巧的名字。如果候选数标记对你来说还是新事物,请先复习一下基础。
用大白话说这个图形
这是应用里的定义,值得记住:某个数字在横跨两行两列的一个矩形上排成一线。这种图形意味着它不能出现在那两列(或那两行)的其他地方。这一句话就是全部思路。剩下的,就是学会认出那个矩形。
先从基于行的版本入手。挑一个候选数字,比如 4。逐行扫描,找出这样一行:该数字作为候选数恰好出现在两格里,不多不少,并记下这两格坐落在哪两列。现在再找第二行,同一个数字又恰好出现在两格里,而且关键在于,是在同样的两列里。当这种情况发生时,那四个坐落在两行两列交角上的格子,就构成了一个矩形。这个矩形就是你的 X-Wing。
回报就在于排除。因为有了那个矩形,这个数字可以作为候选数从那两列里其他每一格中移除——四个角上方、下方和之间的所有格子。这些排除往往能把一道卡死的谜题彻底撬开,在一两步之后暴露出一个崭新的裸唯一数。
这个技巧是完美对称的。在基于列的版本里,你要找的是这样一个数字:它在两列中每列都恰好出现在两格里,并对齐在同样的两行上。四个角同样构成一个矩形,只不过这一次你把这个数字从那两行上的其他格子中排除。形状一样,轴换了而已。
X-Wing 为何成立
其逻辑滴水不漏,这正是 X-Wing 之所以是一个正当的解题步骤、而非一次猜测的原因。以基于行的情形为例,我们那两行里,该数字都只有两个可能的落点,且都在同一对列上,比方说第 3 列和第 7 列。在这两行的每一行里,该数字都必须落在第 3 列或第 7 列,那是它在那里仅有的候选位置。
现在想想它能如何定下来。如果第一行把该数字放在第 3 列,那么为了避免重复,第二行就被逼进第 7 列。如果第一行改用第 7 列,第二行就必须用第 3 列。无论哪种情况,这两列都会在这两行之内各自容纳该数字。由于每一列只能容纳该数字一次,两列现在都已完全被占定。这就是为什么该数字不能出现在第 3 列和第 7 列的其他任何地方,也是为什么你可以放心地把它从这两列里其他每一格中擦掉。
如何发现并运用它
当一道中等偏难的谜题上简单走法枯竭时,就伸手去用 X-Wing。诀窍是逐个数字地搜寻,而非逐格地搜寻。这里有一套可靠的流程:
- 选定单独一个候选数字来专注,从 1 到 9 皆可。
- 扫描每一行,只记下那些该数字作为候选数恰好出现在两格里的行。
- 在这些行里,找出一对:它们的两个候选格坐落在同样的两列里。
- 确认这四格构成一个横跨两行两列的干净矩形。
- 把该数字从那两列里其他每一格中排除。
- 什么也没找到?改看列而非行,重复这次扫描,并沿着那两行排除。
- 换下一个数字,再从头走一遍。
起初这需要耐心,但一旦你学会留意那些某个数字只剩两个归宿的行和列,这个形状就变得很容易认出来了。
与 Swordfish 的关系
X-Wing 有一个值得了解的更大的兄弟。Swordfish 把同样的思路从一个 2×2 的图形扩展到一个 3×3 的图形:三行之中某个数字被限制在同样的三列里,从而让你能把它从那三列的别处排除掉。X-Wing 处在中级偏高阶的层次,Swordfish 则刚好在它之上一点,但如果你理解了 X-Wing 为何成立,Swordfish 感觉就会像一个水到渠成的下一步,而非一个全新的概念。两者同属带你越过新手阶段的那一族其他解题技巧。
X-Wing 奖赏的是一种特别的耐心:你问的不再是"这一格里该填什么?",而是"这个数字还能住在哪里?"这个转变——从填格子转向追踪某个单一数字剩下的归宿——正是通往高阶数独的那道门。拿一道卡住的谜题,挑一个数字,去寻找那个矩形吧。当一个 X-Wing 第一次解开一副曾让你僵住的棋盘时,这个图形就会永远烙进你的眼里。