技巧文檔 / 空矩形
空矩形
> 前置知識:[鏈的基礎](learning://chains)
高階
空矩形
前置知識:鏈的基礎
描述
空矩形是一種“刪候選”的單數技巧:只盯住一個數字 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 可以刪除。
例子
下面兩張圖是空矩形的其它例子,你可以直接對照“空矩形宮內結構 + 短鏈 + 刪數點(紅)”來觀察:


如何尋找空矩形?
一句話:先在某一宮裏找到 d 的“十字/L 形”分佈,再用一條短鏈把 d 逼到相關行/列上,最後用“本宮無 d 可填”的矛盾來刪數。
在遊戲裏你可以按這個順序找:
- 先選一個數字 d
- 在某一宮裏觀察 d 的候選:如果它們都落在同一行 + 同一列的交叉範圍裏(十字/L 形),就可能是空矩形
- 再找一條短鏈,讓某個紅色候選為真時,能把 d 逼到那條行/列上
- 如果因此把該宮裏所有 d 的位置都排空了,就可以反證刪除紅色候選 d