數獨遊戲
Sudoku Helper(單選填入+去除候選) 一.基礎強化 * 隱單(Hidden Single):在某一行/列/宮,某數字只有一個候選格 → 高亮/自動填。 例:假設某一行/列/宮尚未填入的空格裡面候選數字總共有30個,但是只有一個是數字沒有重複, 那麼那一格就該填入那個數字 *鎖定候選(Locked Candidates:指向/主張):某數在一個九宮內只出現在同一行(或同一列)→ 這行/列其他宮的該數可排除。 例: 在左上 3×3 宮(r1–r3 × c1–c3),數字 5 的候選**只**出現在 r2c1、r2c3(也就是**同一條行 r2**)。 → 代表「這個宮裡的 5 一定在 r2 這一行」。在**整個 r2 的其它宮**(r2c4–c9)裡,**都可以刪掉候選 5**(稱為「指向/主張」或 pointing)。 二.中階 *裸對/裸三(Naked Pair/Triple):同一行/列/宮裡有 2/3 格的候選集合完全相同 → 其他格排除那些數。 例: r5c2 = {2,8},r5c7 = {2,8},而這一列其他格**都沒有 2 或 8** 以外的相同組合。 → 兩格「裸露出」一樣的候選集合 {2,8},因此**該列其他格**都可以**刪掉 2 與 8**。 *隱對/隱三(Hidden Pair/Triple):某行/列/宮裡某兩/三個數只出現在 2/3 格 → 鎖定那幾格、剔除其餘候選。 例: 觀察這一列「數字 3」只出現在 r5c1、r5c6;「數字 9」也只出現在 r5c1、r5c6。 即使 r5c1 現在是 {3,9,6},r5c6 是 {1,3,9}, → 因為 **3 與 9 只可能在這兩格**,所以把它們**縮成 {3,9}**,把其它候選(6、1)**刪掉**。 (差別在:隱對是從「數字的稀有度」出發,不要求兩格原本候選完全相同。) 三.進階 *X-Wing:某數在兩行各恰好落在同樣的兩列 → 其他行同列可排除該數。 例:* 在**兩條不同的行**(說 r2 與 r6),數字 7 的候選各自**只出現在同樣的兩個列**(比如 c3、c8)。 * 形成一個「長方形四角」的圖樣:r2c3、r2c8、r6c3、r6c8 是 7 的唯一位置。 * 那...