> For the complete documentation index, see [llms.txt](https://sudoku.kazusa.tech/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sudoku.kazusa.tech/full-marking-techniques/02-regular-wings/01-reasoning-of-regular-wings.md).

# XY-Wing 及推广的基本推理

## XY-Wing

<figure><img src="/files/4Q50LAMsgAbtgcmFW2ym" alt="" width="375"><figcaption><p>XY-Wing</p></figcaption></figure>

如图所示。我们把注意力集中到 `r8c5` 之上。这个单元格只有两个候选数：7 和 9。我们不妨根据所填的数字进行讨论：

* 如果 `r8c5 = 7`，则同列的 `r1c5 = 1`；
* 如果 `r8c5 = 9`，则同宫的 `r9c4 = 1`。

由于 `r8c5` 必须填的是这两个的其中一个，所以 `r1c5` 和 `r9c4` 里肯定会有至少一个位置填的是 1。

这能说明什么呢？`r1c4` 和 `r9c5` 这两处单元格比较特殊。这两个单元格刚好既和 `r1c5` 同一个区域，也和 `r9c4` 同一个区域。我们倒过来看，如果说我们让 `r1c4` 或 `r9c5` 的任意一个格子填上 1，就会同时让刚才我们提到的 `r1c5` 和 `r9c4` 都无法填上 1。

但是，这显然是不行的。我们刚才才得到这两个单元格必须至少有一个 1。所以，这便出现了矛盾。所以，根据前面的两种情况的假设，我们就直接可以得到结论 `{r1c4, r9c5} <> 1`。

我们把这个推理过程称为 **XY-Wing**。

我们再来看一个例子。

<figure><img src="/files/UuvjMYpvJshm16wjZhtc" alt="" width="375"><figcaption><p>另外一个 XY-Wing</p></figcaption></figure>

这个例子和前面几乎一样，所以希望你自己推理它。

## XYZ-Wing

<figure><img src="/files/n9Doch1oCiNBwL2XVRSU" alt="" width="375"><figcaption><p>XYZ-Wing</p></figcaption></figure>

如图所示。这个技巧其实就比刚才的 XY-Wing 多了一个候选数。

和前面的方式一样，我们这次讨论的是 `r3c2` 的填数情况。

* 如果 `r3c2 = 4`，则同列的 `r7c2 = 1`；
* 如果 `r3c2 = 9`，则同行（或者说同宫）的 `r3c1 = 1`；
* `r3c2 = 1`。

这意味着，`r3c2`、`r3c1` 和 `r7c2` 里肯定会有至少一个单元格填的是 1。

那么这一次又有什么单元格可以得到删数结论呢？`r1c2` 了。如果它填上 1，就会同时让刚才所说的三个单元格全部不能填 1，直接产生矛盾。

所以，`r1c2 <> 1` 是这个题的结论。

我们把这个结构（XY-Wing 上多了一个候选数）称为 **XYZ-Wing**。

我们再来看一个题。

<figure><img src="/files/WqRIV2m3Cw3iFuuXvaSq" alt="" width="375"><figcaption><p>另一个 XYZ-Wing</p></figcaption></figure>

这个例子也希望你自己理解。

## WXYZ-Wing

前面我们看过了 XYZ-Wing，是 XY-Wing 上增加了一个候选数得到的新结构。这次，我们再往上加一个格子。看看四个单元格能不能也能这样用。

<figure><img src="/files/ehweQqf9g8X7ZfMlNJYN" alt="" width="375"><figcaption><p>WXYZ-Wing</p></figcaption></figure>

如图所示。这次我们假设的是 `r2c2` 这个单元格。

* 如果 `r2c2 = 2`，则旁边的 `r2c3 = 3`；
* 如果 `r2c2 = 5`，则同宫的 `r3c1 = 3`；
* 如果 `r2c2 = 9`，则同列的 `r7c2 = 3`；
* `r2c2 = 3`。

那么可以发现，这次是整整四个单元格里至少有一个填 3。

和前面一样，我们仍然能找到一个删数单元格。如果 `r1c2 = 3`，则会同时使得四个单元格都不能填 3，满足不了至少一个填 3 的结论，于是就矛盾了。

所以，这个题目的结论是 `r1c2 <> 3`。

我们把这个技巧称为 **WXYZ-Wing**。

我们再来看一个例子。

<figure><img src="/files/dvkd91uSVPq1Cpj7hfmk" alt="" width="375"><figcaption><p>另一个 WXYZ-Wing</p></figcaption></figure>

如图所示。这个例子希望你能自己推理一下。

## VWXYZ-Wing

看得出来，老外已经词穷了。它尝试在往字母表里一个一个字母往上加就成为了一个新的技巧名。用到 Z 之后发现已经没有字母了，又开始往前面找。

既然 WXYZ-Wing 已经过了，下面就再加一个单元格，就成了新的技巧了：**VWXYZ-Wing**。

<figure><img src="/files/dgwtbdyeVP9CsCuJKkOx" alt="" width="375"><figcaption><p>VWXYZ-Wing</p></figcaption></figure>

如图所示。虽然推理完全和前面的一样，但是我还是解释一下。这次我们要假设的是 `r6c4` 的填数情况：

* 如果 `r6c4 = 4`，则同行的 `r6c7 = 1`；
* 如果 `r6c4 = 7`，则同行的 `r6c3 = 1`；
* 如果 `r6c4 = 8`，则同宫（或者说同列）的 `r5c4 = 1`；
* 如果 `r6c4 = 9`，则同宫的 `r4c6 = 1`；
* `r6c4 = 1`。

我们发现，这个例子里，仍然有删数结论。假设 `r6c6 = 1` 的话，则会同时使得前面假设的 5 个单元格全部没办法填 1。所以，结论就是 `r6c6 <> 1` 了。

我们再来看一则例子。

<figure><img src="/files/3tgyK3cOlWLfNVYWXdeO" alt="" width="375"><figcaption><p>另一个 VWXYZ-Wing</p></figcaption></figure>

也是一样，这个例子就给你自己推理了。

## 这种技巧的规格 <a href="#size-of-regular-wings" id="size-of-regular-wings"></a>

可以通过技巧看出，它其实就是逐渐在扩展结构的规格，也就是使用的单元格数量。当然，除了 XY-Wing 变为 XYZ-Wing 的时候只是加了一个候选数而已。这个是名称的历史由来的问题。这我们一会儿说。

这个技巧的极限情况是多少呢？理论来说，这个技巧应该最大可以到 9 个单元格。但是因为越大的规格的这个结构，形成条件也就会越苛刻（毕竟有一个单元格需要有和单元格数量一样多的候选数数量），所以这只是个理论数值。

现在能够从题目里找到的最大规格是 5，即上面的 VWXYZ-Wing 就已经是最大的情况了。

另外，名称的话也是随着单元格数量变化的。和 WXYZ-Wing 以及 VWXYZ-Wing 一样，再大点，字母就会再多一些。所以不难想到后面的名字都是什么：

* 6 个单元格：UVWXYZ-Wing
* 7 个单元格：TUVWXYZ-Wing
* 8 个单元格：STUVWXYZ-Wing
* 9 个单元格：RSTUVWXYZ-Wing

不得不说，这个技巧的取名真的省事。

## 历史由来 <a href="#history-of-naming-of-wings" id="history-of-naming-of-wings"></a>

现在我们来说说为什么这个规格的命名并不是严格遵守的。

可以发现，XY-Wing 到 XYZ-Wing 并没有按多一个单元格方式在推广。相反，XY-Wing 只有两个字母，却上手就用了三个单元格。这个神奇的情况也占用了一个技巧名。

这个的原因是来自于这个技巧的来源。看前面的 XY-Wing 似乎我们看不太出来它的来源。但是如果你把宫内的两个单元格强行移动到行列上去，让这个结构的两个分支“垂直”，你就会发现，它长得很像是二阶鱼的“异数”版本。

二阶鱼是假设出两种填数情况，在排列的时候形成交叉填入的 X 字母形状。而 XY-Wing 在假设的时候，也是随其中一个位置开始假设两种填数，并最终影响到两端的填数。二阶鱼的删数是两个完整的行列；而 XY-Wing 的删数，则也取决于两端填数的影响的范围。

所以，XY-Wing 这个技巧的名字其实是来自二阶鱼的。回忆一下，二阶鱼的英文是什么？X-Wing。所以，不难想到，XY-Wing 就是因为用到了两个数字的假设，因此把 X 改成了 XY。

在之前的历史里，我们说到，X-Wing 的 X 并不是未知数，而是一架飞机的代号。但是，推广到 XY-Wing 时，X 被当成了未知数。换言之，二阶鱼确实用到的是一个数字内部的填数关系，所以 X 也可以理所应当地理解为一个数字。而 XY-Wing 则为两个数字的假设关系，因此 XY-Wing 就这么得来的。

而 XYZ-Wing 以及后面的名称，则是发现 XY-Wing 并不是“完整”的。所谓完整的，可以看到，从 XYZ-Wing 技巧开始，后面所有的结构，假设的单元格本身都带有和单元格总数量一样多的候选数数量。但是 XY-Wing 不是。XY-Wing 刚好少一个。少一个什么呢？少一个 XYZ-Wing 里的那个“Z”，也就是那个删的数字。

所以，再补全后，刚好因为 XYZ-Wing 用到三个字母就补齐了命名上字母的使用情况，因此，后面的技巧名也就随单元格数量直接加字母就行了。几个格子就用几个字母，然后从 Z 字母开始，从后往前数相同数量的字母，然后拼上 -Wing 就是这个技巧的名字了。
