高级 约 8 分钟
多了一条线的 X-Wing
你对 X-Wing 知道的一切在升级后都还在。唯一的改动是三条线顶替了两条。
一句话版本
剑鱼是多了一条线的 X-Wing。三条基线,每条上这个数字最多三个家,而且所有这些家都被同样三条垂直线圈住。
三条线各需要一个数字,三条覆盖线提供三份。覆盖线被供满了,所以除了九个交点,覆盖线上任何地方都可以把这个数字删掉。
形状
挑一个数字。挑三条平行线——比如列。每条线上,这个数字最多三个家。现在检查:这些家是不是全部落在同样三条行里?
是,就是剑鱼。
- 基:那三条列。
- 覆盖:那三条行。
- 排除:在覆盖行里、基线之外。
「最多三个」很重要,而且经常被误读。一条基线可以有一个、两个或三个家。它不能有的是第四个家、而且落在覆盖行外面——因为那样这个数字就能逃出图形,计数论证就散了。
为什么成立
三条基列,每一列都必须恰好包含一份这个数字。
假设这些列里所有家都落在第 1、2、3 行里。甲列把数字放进这三行之一,乙列也放一个,丙列也是。三个落点,分布在三行上。
能有两列落在同一行吗?不能——一行最多装一个。所以三列必须把数字放进三个不同的行,而可用的只有第 1、2、3 行,于是每一行恰好收到一个。
第 1、2、3 行因此被供满。这个数字不可能出现在这三行的任何位置,除了三条基列上的交点。
这和 X-Wing 是同一个穷举论证,只是把鸽笼说得更明确。干活的是计数:三条线、三个家、三个位置。
真实盘面
数字 1,而这个图形是按列走的——这一点值得注意,因为多数人先扫行,会漏掉它。
- 第 3 列:1 只能放 R3C3 或 R5C3。
- 第 8 列:1 只能放 R5C8 或 R7C8。
- 第 9 列:1 只能放 R3C9 或 R7C9。
- 三列里所有的家,都落在第 3、5、7 行之内。
所以三条列各放一个 1,而它们必须一行一个地分布在第 3、5、7 行上。这三行被供满。现在把基线以外的位置清掉:
- R3C1 的 1 删掉。
- R3C7 的 1 删掉。
- R5C1 的 1 删掉。
- R5C7 的 1 删掉。
- R7C7 的 1 删掉。
一个图形换五个排除。注意每条基线只有两个家,不是三个——图形并不要求完整的三个乘三个,它只要求没有第四个家,两个远在许可范围内。
这里「为什么读出来是列而不是行」值得说清楚。如果去扫行,会看到第 3 行的 1 散在四个不同格子里,看着完全不成形。共线的限制是在列上显现的,所以搜索必须往那个方向跑。
怎么扫
剑鱼的找法是 X-Wing 的找法加一条线,纪律也一样。
- 一次只拿一个数字。 永远不要找形状,要找具体某个数。
- 数每条线的家。 对这个数字,逐列走一遍,记下每列能放它的格子数。留下两个或三个的线。
- 把候选分组。 如果三条列的候选全都落在同样三行之内,就是剑鱼。如果牵进第四行,继续找。
- 查第四个家。 一条基线在三条覆盖行之外还有家,整个图形就废了。这一步最常被跳过,也是唯一真正要紧的一步。
- 清覆盖线。 把这三行里、基线以外的该数字删掉。然后把行列对调,整个扫描再来一遍。
一个实用捷径:剑鱼通常出现在已经填了不少位置的数字上。盘面上只剩五个或更少的家时,每条线的家数都很少,图形一眼可见。从出现次数最多的数字开始。
陷阱
三格当三条线。 剑鱼不是一行里的三格,是三条线、每条最多三个家。把格子数当成线数,会做出没有依据的排除。
在基里面删。 基列是这个数字必须落下的地方,没有什么可以让出来。所有删除都在覆盖行、基线之外。把方向搞反,是用一个有效图形把盘面弄坏的最常见方式。
一条基线有四个家。 如果三条列里有一条在第 6 行还有第四个家,这个数字就能逃出去,第 1 到 3 行也不再各得一份。没有图形,没有排除。
以为九个交点都填满。 其中好几个会是空的或已经解出来。图形是关于线的陈述,不是一个九格方块——上面那张盘面只标了六个角,正是这个原因。
用在哪
剑鱼属于「X-Wing 已经查过、空手」的那一层。它比 X-Wing 少见,也难看得多,因为九格形状不会像矩形那样自己跳出来。
务实的工作流是:先把每个数字的 X-Wing 扫一遍,再对还没解决的数字扫剑鱼。两个都空手,下一步通常是翼,而不是水母——水母更罕见。
常见疑问
什么是剑鱼?
三条平行线上某数字各最多三个家,且全部落在同样三条垂直线上。三条基线上每条都必须放这个数字,所以三条覆盖线全被供给。
剑鱼的九格都必须有这个数字吗?
不必。图形由线定义,不由格子定义。九个交点里有些没有这个候选,是允许的,只要没有哪条基线在覆盖线之外还有第四个家。
剑鱼和 X-Wing 有什么区别?
X-Wing 用两条基线和两条覆盖线,四格。剑鱼三条对三条,最多九格。排除落在覆盖线这条规则完全一样。
排除往哪个方向走?
从基线往覆盖线。如果基是三条列,就在穿过它们的三条行里删、列以外的地方。搞反是最常见的错误。