grid_on

Sudoku Clean 素数独

技巧文档 / 空矩形

空矩形

前置知识: 链的基础

高阶

空矩形

前置知识:链的基础

描述

空矩形是一种“删候选”的单数技巧:只盯住一个数字 d

它的特点是:在某一宫里,数字 d 的候选格子呈现“十字 / L 形”的分布——也就是 d 只能落在这宫的一条行和一条列上
当我们再借助一条短链把 d 逼到那条行/列上时,就可能出现一个很直观的矛盾:这宫里反而没有位置能放 d 了,从而反证删数。


详解

空矩形 详解示例

先看上图:要删除的是 r6c9 里的候选数字 3(红色)。

我们用一个很短的反证来理解为什么能删:

  • 假设 r6c9 = 3(红色候选为真)
  • 因为同一行不能出现两个 3,所以 r6c4 ≠ 3
  • 在第 4 列里,3 只剩下两个位置二选一:r6c4 或 r8c4
    既然 r6c4 不是 3,那么 r8c4 必须是 3
  • 现在矛盾来了:请观察第 9 宫(空矩形所在的宫)
    由于 r6c9 = 3(同一列)和 r8c4 = 3(同一行)的影响,第 9 宫里所有可能的 3 都被同时排除了,导致第 9 宫里没有位置可以填 3(矛盾)

所以假设不成立:r6c9 不可能是 3,候选数字 3 可以删除。


例子

下面两张图是空矩形的其它例子,你可以直接对照“空矩形宫内结构 + 短链 + 删数点(红)”来观察:

空矩形 示例 A

空矩形 示例 B


如何寻找空矩形?

一句话:先在某一宫里找到 d 的“十字/L 形”分布,再用一条短链把 d 逼到相关行/列上,最后用“本宫无 d 可填”的矛盾来删数。

在游戏里你可以按这个顺序找:

  1. 先选一个数字 d
  2. 在某一宫里观察 d 的候选:如果它们都落在同一行 + 同一列的交叉范围里(十字/L 形),就可能是空矩形
  3. 再找一条短链,让某个红色候选为真时,能把 d 逼到那条行/列上
  4. 如果因此把该宫里所有 d 的位置都排空了,就可以反证删除红色候选 d