X-Wing 数独 - 高级候选排除技巧详解

·约 1 分钟阅读

X-Wing 是指当 2 行(或列)中某个数字的候选位置恰好在相同的 2 列(或行)时,可以从这 2 列(行)的其他格子中排除该数字的高级技巧。本文讲解攻克 Master 难度所需的逻辑。

X-Wing 的逻辑结构

X-Wing 在以下条件下成立。对于某个数字(例如 4),在行 A 和行 B 中,4 的候选位置都仅存在于列 X 和列 Y 两处。此时,4 在行 A 中要么在列 X 要么在列 Y,在行 B 中也是如此。进一步,由于列的约束,如果行 A 中 4 在列 X,则行 B 中 4 必在列 Y;如果行 A 中 4 在列 Y,则行 B 中 4 必在列 X。无论哪种情况,列 X 和列 Y 中都已确定会放置 4,因此可以从列 X 和列 Y 的其他格子(行 A、B 以外)中排除 4。

名称由来与直观理解

X-Wing 的名称源于将 4 个候选格子用对角线连接后呈 X 字形。行 A-列 X、行 A-列 Y、行 B-列 X、行 B-列 Y 这 4 个格子形成矩形,其对角线画出 X 形。这 4 个格子中,对角线上的 2 个格子会填入数字(具体是哪条对角线尚未确定)。能够直观识别这种模式后,发现速度会大幅提升。

发现步骤

系统地寻找 X-Wing:(1) 对于某个数字,列出所有候选位置恰好为 2 处的行。(2) 在其中寻找候选列位置相同的行对。(3) 找到配对即 X-Wing 成立,从对应列的其他格子中排除候选数。以列为基准的 X-Wing 也同样可以寻找(只需交换行和列)。前提是候选数管理准确,笔记更新遗漏会导致错过 X-Wing。

向 Swordfish 的扩展

X-Wing 是 2 行 × 2 列的模式,将其扩展为 3 行 × 3 列就是 Swordfish。当 3 行中某个数字的候选位置合计在 3 列以内时,可以从这 3 列的其他格子中排除候选数。进一步扩展为 4 行 × 4 列的是 Jellyfish。这些都是 X-Wing 的推广,逻辑依据相同,但模式复杂度增加使得发现难度大幅上升。