> 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/09-almost-locked-candidates.md).

# 欠一数组（ALC）

下面我们将进入新的技巧的学习。前面我们一连学习了五种不同的致命结构技巧（利用唯一解的技巧），我们休息休息，将推理逻辑回归到普通的矛盾上去。

## 标准类型 <a href="#standard-type" id="standard-type"></a>

### 欠一数对（Almost Locked Pair） <a href="#almost-locked-pair" id="almost-locked-pair"></a>

<figure><img src="/files/LQS1gKADxkmixWqLk9fL" alt="" width="375"><figcaption><p>欠一数对</p></figcaption></figure>

如图所示。请注意图中 `r7` 和 `b8` 两个区域。

我们发现，在 `r7` 里，数字 1 和 6 整体只能填入到 `r7c345` 三个单元格里；而其中的 `r7c45` 均位于 `b8` 里。那么我们不妨作出这样的假设。我们发现，`r9c6` 这个单元格只要填入了一个数，不论是哪个数，因为都是 1 或 6 的关系，那么 `r7c45` 都无法填入这个数字。而因为 `r7` 上必须填入一个 1 和一个 6，所以 `r7c345` 三个单元格的其中两个单元格都需要被 1 或 6 所占据。

而且，由于 `r7c45` 里 1 或 6 的其中有一个数会填不进去的关系，那么我们只能知道的是，`r7c3` 必须承担起填入 1 或 6 的责任，以确保 `r7c45` 只用再填一个数，结构就可以“稳定”下来了。所以，`r7c3` 必须是 1 或 6 的其一。那么结论就是 `r7c3 <> 29`……吗？

别急。别着急下结论。刚才我们说到，`r7c3` 必须是一个 1 或 6 的其中一个数（假设我用字母 $$a$$ 来表示），而 `r7c45` 只能拿出其中一个单元格填一个数（假设用字母 $$b$$ 来表示），这是不是很像是之前比如说唯一矩形类型 3 里的那种摆放状态？

因为 $$a$$ 和 $$b$$ 此时均是 1 或 6 里的数（而且 $$a \neq b$$），所以，按道理来说，`r7` 的 `r7c345` 会有其中两个单元格形成关于 1 和 6 的隐性数对；而借用这一点，将视角回溯到 `r9c6`，我们还能发现神奇的现象。因为 `r7c45` 只能填一个 $$b$$，所以 `r9c6` 只有 1 或 6 的话，那岂不是它只能填 $$a$$？是的，我们甚至还可以更进一步地得到，`r7c3 = r9c6` 这个填数关系。当然，这个填数关系似乎没有什么好用的结论（最多也就影响你后续填入了其中一个单元格后，立马可以把这个数填在另外一个单元格上）。不过，我们主要想得出的是 `r9c6` 填 $$a$$ 的结论。因为这样一来，`b8` 也会有一个数对，一个显性数对，用的是 `r7c45` 和 `r9c6` 的其中两个单元格。所以，`b8` 里的其余单元格都不能填入 1 或 6。所以，这个题的结论是 `{r8c456, r9c4} <> 16` 和 `r7c3 <> 29`。

我们把这种用到一个行/列和一个宫的组合，并带有一边显性数组一边隐性数组的这种特殊结构称为**欠一数组**（Almost Locked Candidates，简称 ALC）。图上这个例子是欠一数组的最低规格的情况，因为是数对，所以叫**欠一数对**（Almost Locked Pair，简称 ALP）。

> 这里要稍微注意一下的是，在英文名里，欠一数组这个技巧的英文名用的单词是 Locked Candidates，即区块，而并不是数组，这是因为国外的数独圈子里，他们更倾向于将这个技巧结构看作是区块的延伸（如不看 `r7c3` 的话，数字 6 就称为了区块，并会影响到 `r9c6` 的填数，比较符合区块的长相和推理过程）。而我们这边的圈子更看重假设成 $$a$$ 和 $$b$$ 参与讨论的情况，所以更符合数组一些。不过这都不是很重要，搞清楚结构的长相，叫什么都行。

下面我们再来看一个欠一数对的例子，用于巩固，以便你能理解它。

<figure><img src="/files/4dz4NykKxFkUGsVLwF5q" alt="" width="375"><figcaption><p>欠一数对，另外一个例子</p></figcaption></figure>

如图所示。这个例子就自己看一下了。

### 欠一三数组（Almost Locked Triple） <a href="#almost-locked-triple" id="almost-locked-triple"></a>

下面我们来看三数组的情况。

<figure><img src="/files/w7FuKS0U463WZdamIBB8" alt="" width="375"><figcaption><p>欠一三数组</p></figcaption></figure>

如图所示。这次我们把视角切换到 `r6` 和 `b6` 上。

可以看到，`b6` 里有 `r4c8`、`r5c7` 和 `r6c78` 一共四个单元格可以填入 1、5、6，其中 `r6c78` 还位于 `r6` 上。

和之前假设一样，我们还是从显性这边开始。由于 `r6c12` 里只能是 1、5、6 的其中两种数字，所以我们不妨假设他们为 $$a$$ 和 $$b$$，那么为了确保 `b6` 能够正常摆放下 1、5、6 三种数字，我们只能让 `r6c78` 的其中一个单元格填入 $$c$$（此时 $$abc$$ 均是 1、5、6 里的数，且互相都不相等）。

于是，由于 `r6c78` 只有一个单元格填 1、5、6 的其中一个数，所以 `r6c1278` 的其中三个单元格将会构成显性三数组，而 `r4c8`、`r5c7` 和 `r6c78` 的其中三个单元格将构成隐性三数组。这里要稍微注意一下，由于我们无法确定 `r6c78` 的其中哪一个单元格是 1、5、6，所以删数结论并不会在这两个单元格里产生，毕竟这并不确定。

所以，这个题的结论就是 `r4c8 <> 3`、`r5c7 <> 4` 和 `r6c46 <> 56`。其实按理说 `r6c46(1)` 也能删，但是这候选数不存在是因为这个盘面状态之前，已经有 1 的区块（`r4`）把它给干掉了。

我们把这个带三数组的状态，称为**欠一三数组**（Almost Locked Triple，简称 ALT）。

下面我们还是老规矩，再看一个例子。

<figure><img src="/files/ueOLcSqC2jFkSQYoo5T9" alt="" width="375"><figcaption><p>欠一三数组，另一个例子</p></figcaption></figure>

如图所示。这个题也自己看。要注意的是，这个题长得比较简单，但是并不影响推理。

## 带有明数的类型 <a href="#value-type" id="value-type"></a>

前面的例子，我们都能比较容易地理解。下面我们来看，借用假设字母时使用明数的类型。所谓**明数**（Value），其实就是提示数和填入数的统称，即这个单元格此时不是空格的状态，但它具体是初始就有的提示数信息，还是自己填的并不重要；明数早期也叫**确定值**，即当前确定的数值。

> 可以从名字看出，有明就有暗。所谓暗数，肯定指的就是候选数了。是的，暗数就是候选数的别名。不过这里我们就不改了，毕竟候选数用的次数也比较多了。

### 带有明数的欠一三数组 <a href="#almost-locked-triple-with-value" id="almost-locked-triple-with-value"></a>

<figure><img src="/files/hxFlQz9tB0mvsSldOBe8" alt="" width="375"><figcaption><p>明数欠一三数组</p></figcaption></figure>

如图所示。我们发现，`c4` 里，`r3c4` 只有候选数 7 和 8。如果它填了一个数进去，那么此时 7 或 8 就不能填在 `r78c4` 之中，于是这个数就会落到 `b8` 里的 `r78c6` 之中。

不过和刚才的例子有所不同的地方是，这次我们再也无法确定 7 和 8 的具体填数位置，因为此时 `b8` 里能填 7 和 8 的地方一共有四个单元格而不是原始欠一数对那样只有三个单元格。

这有些麻烦了。但是我们仔细再观察一下，似乎数字 1 也可以纳入到欠一数组的结构里来。如果纳入进来的话，相当于就是说 `r78c46` 四个单元格其中必须填 1、7、8 三种数字。这就合适了：因为刚开始我们有 `r78c4` 只能有一处填 7 或 8，而 1 纳入后，1 会占用这四个单元格的其中一个名额，`r78c4` 占一个名额，剩下呢？剩下就是 `r78c6` 里不填 1 的另外那一个单元格，这样就刚好能放下三个数字 1、7、8。

很好。这样我们就保证了 1、7、8 都放得下了。所以结论呢？由于我们先填了一个数在 `r3c4` 里，所以先假设它是填的 $$a$$。然后，我们可以得到 `r78c4` 里必须有一个 $$b$$。然后，`r78c6` 里必须是一个 $$a$$ 和一个数字 1。所以，结论就是，`r2c4 <> 78` 和 `r78c6 <> 234`。

这里我们借用了数字 1 必须填在 `r78c46` 里。但实际上我们看得到的是，`r78c46` 里其实就只有 `r78c6` 右边这两个单元格可以填 1。显然，由于 `c4` 早就已经有 1 的明数出现，所以压根也放不了 1，所以我们只能把这个 1 视为共轭对一般的存在，相当于给结构打了个补丁，以便支持推广的形式。这是一般的理解方式。

不过，你也可以这么去理解它：哪怕 `r4c1` 的这个明数 1 它是以候选数形式存在的，这个欠一数组结构仍然是成立的。比如说，`r4c1` 此时不再是明数 1，而 `c4` 还存在一个单元格只有候选数 1、7、8。然后我们为了让这个 1 不能直接通过排除出数而破坏掉结构，我们再给 `r3c4` 补上候选数 1。此时，这个结构就会变为一般的欠一三数组。结构的结论仍然是成立的，甚至删数大多都不会变（当然，1 可能会新增删数）。所以，这个例子实际上就可以被视为是欠一三数组，但是数字 1 处于确定在某一个固定的格子里的特殊状态。所以这种类型也称为明数类型。

可以看出，明数类型在删去固定的这个明数后，实际上用的数字本身就只有 7 和 8 两种数，它已经是最小规格的情况。因此，明数类型等价于标准版本的欠一数组来看，起步就是三数组。

下面我们再来看一个例子。

<figure><img src="/files/6ZnZj83eFF5NKvBblb4v" alt="" width="375"><figcaption><p>明数欠一三数组，另外一个例子</p></figcaption></figure>

如图所示。这个例子和前面那个完全一样，所以就留给你自己看了。

### 带有明数的欠一四数组 <a href="#almost-locked-quadruple-with-value" id="almost-locked-quadruple-with-value"></a>

由于明数的特殊性，所以欠一数组具有四数组的状态。

<figure><img src="/files/29mk9hlNwQCPdDMWhdwS" alt="" width="375"><figcaption><p>明数欠一四数组</p></figcaption></figure>

如图所示。和前面一样。我们先看成欠一三数组的状态。可以发现，`c7` 里，单元格 `r12c7` 只有候选数 2、3、7。所以，这两个单元格最终只能填入数字 2、3、7 的其中两个。于是，这两个数字都不能出现在 `r89c7` 之中。而由于我们还需要确保 `b9` 里数字 2、3、7 填入正常，而 `r89c7` 此时最多只能填一个 2、3、7 的数字进去（还不能和 `r12c7` 填的一样）。所以，`r7c89` 和 `r8c8` 里必须安插两个位置填上跟 `r12c7` 一样的数字。

而我们还发现，数字 5 在 `b9` 里只能填在 `r7c89` 和 `r8c8` 里，所以里面还得有一个单元格被 5 填入。所以整体来看，能摆成功的唯一状态是这样的：`r12c7` 填入的数字是 $$a$$ 和 $$b$$，然后 `r89c7` 只能填一个 $$c$$ 进去（此时 $$abc$$ 是 2、3、7，且互不相等）。然后，`r7c89` 和 `r8c8` 里有一个单元格填 5，剩下俩是 $$a$$ 和 $$b$$。所以，这么看起来，`c7` 里会有关于 2、3、7 的显性三数组出现，而 `b9` 里则会出现 2、3、5、7 的隐性四数组（别忘了 5 也在其中）。所以删数结论是 `r456c7 <> 37` 和 `{r7c89, r8c8} <> 19`。

当然，和前面也是一样的。你也可以将 `c7` 里已经存在的明数 5 视为候选数状态，然后这就好比是一个关于 2、3、5、7 的**欠一四数组**（Almost Locked Quadruple，简称 ALQ）结构，所以我们把这个称为带明数的欠一四数组。

下面我们再来看一个例子。

<figure><img src="/files/NeURrTgwyuhfD5EVOJNC" alt="" width="375"><figcaption><p>明数欠一四数组，另一个例子</p></figcaption></figure>

如图所示。这个例子更为特殊。它直接用了两个明数。推理方式也是完全类似的，首先假设 `c4` 里填 3 和 9 的情况，可以得到 `r23c4` 不能填这个数，于是这个数就会落入 `r2c5` 和 `r3c56` 的其中一个单元格里。而我们还发现由于 2 和 5 只能摆在这三个单元格之中，所以一个 2 一个 5 就占用了两个单元格，所以刚好只能再放得下一个位置填和 `r5c4` 一样的填数。

欠一数组的内容我们就介绍完毕了。
