# 拓展矩形的基本推理

欢迎来到新技巧的学习。我们来看下拓展矩形技巧的基本推理方式。

## 类型 1 <a href="#type-1" id="type-1"></a>

<figure><img src="/files/IrM61sKsA7uF4esfUXEC" alt="" width="375"><figcaption><p>基础示例</p></figcaption></figure>

如图所示。唯一矩形不是用两种数字吗，我们这次用三种数字。

虽然因为数字种类多了，单元格肯定也得多点才能用于合适的推理，但是它和唯一环不同。唯一环是环状的，而拓展矩形不是环状的，而是顺着唯一矩形的结构横竖进行延伸。比如此题，它用到的单元格是 `r357c13` 一共 6 个单元格。

如果我们让 `r3c1` 里只剩下 1 或 5，则这 6 个单元格全部只剩下 1、3、5 三种数字。

现在我们使用一种和唯一矩形不同的假设模式来假设它。如果我们用字母 $$a$$、$$b$$ 和 $$c$$ 来表示三种不同的填数 1、3、5，则我们可以随意往里面塞这三种字母。注意填的时候要规避唯一矩形显而易见的矛盾：

<figure><img src="/files/3Th1nuN9rw6o4Vq7bby3" alt="" width="375"><figcaption><p>其中一种字母的假设</p></figcaption></figure>

如图所示。当然，这里的字母假设并非唯一的方法。这里只是给你展示一下它可以这么安放三种数字，至于哪个字母对应哪个数字，其实并不重要。

可以看出，图中有箭头标识。看出这个箭头代表什么了吗？是的，我们把字母按照箭头的方向对应位交换一下。

<figure><img src="/files/cGHmAucdLnEXGXNUOI3r" alt="" width="375"><figcaption><p>交换后的结果</p></figcaption></figure>

如图所示。在我们左右对换后，字母的位置显然发生了变化。但是这种变换是有效的，因为它并不会改变我们横纵填数的逻辑。比如说，`c1` 里原本就是三个字母 $$abc$$，现在换成了 $$bca$$，也仅仅是把填数次序换了，实际三个数字大体上照样没有变动。同理，其他位置也都如此。

这里尤其要注意，这种交换比你想象得要更严谨。因为它是左右对应位置交换，因此不论是行上还是列上，甚至是宫内，数字的种类都不会发生任何的变动。尤其是宫内，虽然结构是三行两列的，也就意味着行上和列上可能用到的格子数量不一样。但是实际上这种变动会使得原本是多少，交换后仍旧是多少。这个是非常神奇的，它也是拓展矩形的精髓。

当我们这种操作后，我们就清楚地知道，这种交换仍旧保证了唯一矩形要求的“所有行列上的填数不发生变动”。唯一矩形正是利用了这一点才得到后续不影响盘面其他候选数，因此产生两个填法违背唯一解的矛盾的点的。拓展矩形因为我们采用的方式可以保证这种现象即使在更多种不同数字出现后，仍然也可以产生矛盾，因此唯一矩形的那种推理和得到的矛盾也在此适用。

于是，这个题的假设就不正确了。因为我们假设 `r3c1` 只有 1 或 5，所以这个题的实际结论应该是 `r3c1 <> 15`。

我们把这个结构称为拓展矩形，即唯一矩形在矩形形状上没有发生变化（“矩形”二字保留），但仍有拓展。另外，由于它类似于唯一矩形的类型 1（标准类型），所以这也就被当成是拓展矩形的类型 1。

> 这里我要啰嗦一句。有些读者还是不明白为什么假设只有 1 或 5 的反面是同时删掉 1 和 5。这里我们其实是用到了逻辑学的开括号需要使用到的一个说法，叫德摩根律。假设只有 1 或 5，换个说法就是“填 1 或 填 5”。要把这个说法取相反的话，自然就是“不（填 1 或填 5）”。但是这里要把括号给打开，所以“或”要改成“和”，然后把“不”安插到两个“填”字的左边配上，所以就变为了“不填 1 和不填 5”。
>
> 对于逻辑学的一些细节，我们将在单开的板块里进行细致解答。

下面我们来看其他三种类型的拓展矩形。

## 类型 2 <a href="#type-2" id="type-2"></a>

<figure><img src="/files/G2DqsRfhfFE07XMurzOC" alt="" width="375"><figcaption><p>类型 2 例子</p></figcaption></figure>

如图所示。刚才我们看到的例子是三行两列竖着的，这回我们来看两行三列横着的。

假设我们把 `r46c9(5)` 从盘面里删除，则 7、8、9 三种数字可形成前文描述的对应位交换而产生的矛盾。不过这次我们是竖着上下交换，因为结构是从立柜式的改成平躺式的了，所以左右交换自然就换成上下对应位置交换。

由于其他的逻辑不变，所以这里就省略了。因为我们能得到矛盾，因此原本的假设不对。原本的假设是去掉 `r46c9(5)`，那么正确的结论就是 `r46c9(5)` 会形成区块结构。因此，结论就是删除 `c9` 和 `b6` 里其他位置的 5 了。当然，因为这个题的 `c9` 没有空格自然就不管了。所以这个题的结论是 `r5c9 <> 5`。

我们把这个称为类型 2（区块类型），因为它也是走唯一矩形的类型 2 演变而来。

## 类型 3 <a href="#type-3" id="type-3"></a>

<figure><img src="/files/oWipSsKbgf2uBT35WdaZ" alt="" width="375"><figcaption><p>类型 3 例子</p></figcaption></figure>

如图所示。和前文一样，我们可以立马得到 `r4c78` 里的候选数 8 和 9 是不能同时去掉的。另外，我们又发现 `r4` 上有两个单元格只有候选数 7、8、9，分别是 `r4c1` 和 `r4c6`。那么，我们可以尝试在 `r4c78` 里选择一个单元格填入 7、8、9 的数字，与 `r4c16` 配合形成显性三数组。所以这个题的结论就是 `r4c4 <> 8` 了。

我们把这个称为类型 3（数组类型）。

## 类型 4 <a href="#type-4" id="type-4"></a>

<figure><img src="/files/HUdJIxGY4n8rYRZJpvtd" alt="" width="375"><figcaption><p>类型 4 例子</p></figcaption></figure>

如图所示。我们发现 `c3` 里数字 1 形成了共轭对，于是不论这两个单元格哪一个填 7，另外一个单元格都肯定是 1，于是结构用到的 6 个单元格将只有数字 1、2、7，形成矛盾。

所以，结论就是 `r46c3 <> 7`。

这个就称为类型 4（共轭对类型）。

## 拓展矩形的形成条件 <a href="#condition-of-forming-extended-rectangle" id="condition-of-forming-extended-rectangle"></a>

可以从前面给的四个例子里看出，似乎他们具有一个共性，就是他们的摆放一定是位于并排的三个宫里。比如这个类型 4 的例子，用到的单元格只在 `b456` 里，而不会把其中的某个或某些单元格挪到比如 `b123` 上去，或者 `b789` 下面去。

这是显然的，因为一旦挪动出去了之后，拓展矩形就不再能够保证每一个宫在内部对应位交换时，宫内的填数也不发生变化了，因为此时宫内只有一个单元格了。

所以，拓展矩形需要形成的一大必备条件，也是唯一一个前提条件就是，所有的单元格都必须只能出现在并排的三个宫里。当然，别的一些细致的条件就不说明了，例如必须偶数个单元格什么的（毕竟每推广一种数字就需要多一对单元格，用于上下或左右配对交换）。

## 类型 3 的变体 <a href="#variant-type-3" id="variant-type-3"></a>

拓展矩形比我们想象得要复杂一些。下面我们来看下类型 3 的变体形式。

<figure><img src="/files/ugaGgbeLm6GevRzaYqFR" alt="" width="375"><figcaption><p>类型 3 变体，例子</p></figcaption></figure>

如图所示，我们发现这个类型 3 也太特殊了吧，删数都跑到结构里面去了。

可以看到，显然 `r4c4(6)` 和 `r7c4(7)` 不能同时从盘面里消失。否则数字 2、8、9 在 `r247c46` 里直接出现矛盾。所以，这两个数里至少有一个是正确的。

我们又发现，`c4` 里有两个单元格只有 6、7、9 三个候选数，于是我们就可以取出 `r47c4` 的其中一个单元格填入最终的 6 和 7，与 `r68c4` 配合形成显性三数组。

等会儿！拓展矩形用的数字是 2、8、9，已经用到了 9。而显性三数组也用到了 9，这还能成立吗？实际上是能的，因为推理过程之中，`r47c4` 里拿出 6 或 7，实际上是跟 9 没有关系的。硬要说有关系，那也得等到后面一步了，因为这里我们无论如何都不知道 9 的具体填法，只知道 6 和 7 有对的数字。

而得到这一点后，恰好我们可以利用 `r68c4` 形成三数组。到这一步而言，都没有什么不妥。那么，既然三数组会形成的话，我们可以很明确地知道，`r47c4` 只能拿出 6 或 7，而不能给三数组提供 9 的位置摆放。但是不论是 6 还是 7，`r68c4` 里都会有一个候选数 9 的存在，因此你一旦往 `r47c4` 里填进去 6 或 7，`r68c4` 的其中一个单元格都会产生一个 9 的填入。而这个数字 9，只能产生在这里。所以，拓展矩形原本存在的候选数 9 没有任何机会填入。

所以，这个题的结论就是，`c4` 里所有除了三数组用到的四个单元格外的其他任何单元格都不能填 9，即 `r247c4 <> 9`。本题我选用了深红色更为醒目的方式暗示这个删数就算是结构的一部分，也会因为结构的推理过程而返回来删除它自己。这种现象被称为“自噬删数”，不过这个术语是后面一些技巧才会用到的，这里就不过多说明了。

## 类型 4 的变体 <a href="#variant-type-4" id="variant-type-4"></a>

除了类型 3，拓展矩形的类型 4 也存在一种变体形式。前面的类型 4 给我们标注的共轭对是沿着配对交换的方向在延伸。这次我们把共轭对的方向改一下，改成沿着并排的宫的方向延伸。

<figure><img src="/files/1wLAYSS1sdfnSfHL5LHV" alt="" width="375"><figcaption><p>类型 4 变体例子</p></figcaption></figure>

如图所示。这次我们换了下共轭对的方向，删数就比正常类型要诡异一些了。

可以看到，由于 4 只能在 `r7c38` 里填一个，所以这两个单元格另外一个位置不能是 3 也不能是 9。这是显然的，因为拓展矩形用到了数字 3、4、9。一旦填了 3 或 9，另外一边因为是共轭对的关系填上了 4，于是 6 个单元格就会直接形成拓展矩形的矛盾。

所以，这个题的结论就是 `r7c3 <> 9` 和 `r7c8 <> 3`。当然，删数 3 和 9 在逻辑上是可以合并的（例如说就算 `r7c3` 也有 3，也是可以删除的），因此也可以直接把这个删数简单记作 `r7c38 <> 39`。

你肯定有所怀疑，是否这种删数规则也适用在标准的那个类型 4 里。实际上是可以的。下面这个例子就展示了它的删数情况：

<figure><img src="/files/uHe7Taum0hLmx5wLjcI6" alt="" width="375"><figcaption><p>类型 4，删数数字不一定相同的情况</p></figcaption></figure>

如图所示。不过这个例子就自己看了。

## 胖和瘦的概念 <a href="#fit-and-fat-types" id="fit-and-fat-types"></a>

和唯一环不太相似的一点是，拓展矩形因为结构的特殊性，它具有一种独特的概念：**胖拓展矩形**（Fat Extended Rectangle）和**瘦拓展矩形**（Fit Extended Rectangle）。

所谓胖瘦，指的是拓展矩形在摆放的时候是否是顺着并排的三个宫的方向在延伸。如果是的话，就是瘦的；否则就是胖的。

根据定义，因为所有前面给出的例子都是顺着并排的宫的横纵方向在延伸单元格，所以前面我们看到的都是瘦拓展矩形。下面我们来看看胖拓展矩形到底长啥样。

<figure><img src="/files/rj13tqbVckRzoJAUUf73" alt="" width="375"><figcaption><p>胖拓展矩形</p></figcaption></figure>

如图所示。可以看出，它是类型 2。不过它的外貌确实有所不同。我们发现，同一个宫里不再是前面那样只有两个单元格，而这个似乎转了一下，每一个宫都有 3 个单元格，也只用了两个宫。

这个结构能否适用拓展矩形的逻辑推导呢？也是适用的。假如我们把 `r13c3(9)` 去掉，所有 6 个单元格就只剩下 1、3、6 三种候选数。

我们这次仍旧顺着并排宫的方向对应位进行数字交换，于是我们有下面这样的匹配方式：

<figure><img src="/files/NAndrusyUZJHWquKgRCM" alt=""><figcaption><p>胖拓展矩形的交换方式</p></figcaption></figure>

如图所示。这样便有了和前文一样的交换模式，于是，矛盾仍然可以形成。既然矛盾能形成，那么删数结论自然也就成立了。

下面我们再来看一个例子。不过就自己推理了。

<figure><img src="/files/hLeOAssz8M8p6jk7BPsu" alt="" width="375"><figcaption><p>胖拓展矩形，另外一个例子</p></figcaption></figure>

如图所示。这里就交给你自己看了。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sudoku.kazusa.tech/full-marking-techniques/07-extended-rectangle/01-reasoning-of-extended-rectangle.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
