grid_on

Sudoku Clean

技巧文檔 / 空矩形

空矩形

> 前置知識:[鏈的基礎](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 可以刪除。


例子

下面兩張圖是空矩形的其它例子,你可以直接對照“空矩形宮內結構 + 短鏈 + 刪數點(紅)”來觀察:

空矩形 示例 A

空矩形 示例 B


如何尋找空矩形?

一句話:先在某一宮裏找到 d 的“十字/L 形”分佈,再用一條短鏈把 d 逼到相關行/列上,最後用“本宮無 d 可填”的矛盾來刪數。

在遊戲裏你可以按這個順序找:

  1. 先選一個數字 d
  2. 在某一宮裏觀察 d 的候選:如果它們都落在同一行 + 同一列的交叉範圍裏(十字/L 形),就可能是空矩形
  3. 再找一條短鏈,讓某個紅色候選為真時,能把 d 逼到那條行/列上
  4. 如果因此把該宮裏所有 d 的位置都排空了,就可以反證刪除紅色候選 d