如何使用數獨解題器
使用解題器非常簡單。上方空白的 9×9 方格運作方式跟一般數獨一樣:點選一個格子,再點選數字鍵盤上的數字(也可以直接用實體鍵盤)。把數獨上所有「已給的」數字輸入進去,其餘格子保持空白。
-
輸入提示數字
點選每個格子,輸入印在數獨上的數字。如果輸入錯誤,再次點選相同數字即可清除,或使用 Backspace / Delete 鍵。
-
檢查衝突
解題器會用紅色標示同一列、同一行或 3×3 區塊內重複的數字。請在求解前先修正衝突 — 通常表示某個數字放錯了格子。
-
按下「求解」
按一下「求解」按鈕。演算法會在毫秒內填滿所有空格。您輸入的數字會以黃色背景顯示,解題器找到的數字則以綠色顯示。
-
查看結果
您現在可以看到完整解答。把它和您解到一半的數獨對照來找出錯誤,或用來確認您的答案。
-
重新開始
按「清除」可以清空方格並輸入另一個數獨。或按「範例」載入示範用的數獨,看看解題器的運作。
數獨解題器是如何運作的?
我們的解題器使用一種叫做「回溯」的技術 — 大多數數獨程式所依賴的同一種基本演算法。以下簡單說明您按下「求解」時發生了什麼事:
演算法會由上而下、由左至右掃描方格,尋找第一個空格。它會嘗試放入數字 1。如果 1 沒有違反任何數獨規則(同列、同行或 3×3 區塊內不重複),就前進到下一個空格並重複動作。如果 1 到 9 沒有任何數字能放,演算法就會「回溯」 — 回到前一個格子嘗試下一個數字。這個流程會一直進行,直到方格被填滿,或所有可能性都被試過為止。
回溯是一種深度優先搜尋。最壞的情況下可能要嘗試上百億種組合,但因為數獨的規則會強力修剪搜尋樹,即使是最難的 9×9,在現代裝置上也能在幾毫秒內解開。
更進階的解題器會在回溯之上加入額外的邏輯。像是裸單、隱單、裸對、指向對、區塊/行列消去、X-Wing 等技巧,能在暴力搜尋開始前就先填入一些格子。我們的解題器只仰賴純粹的回溯,保持簡潔且快速 — 對任何報紙或網路上的數獨來說都綽綽有餘。
回溯演算法 — 逐步說明
若您想深入了解這個演算法,以下就是我們的解題器在內部所做的事情:
-
找下一個空格
從第 1 列到第 9 列、由左至右掃過每個格子。第一個值為 0(空白)的格子就是目標。
-
逐一測試候選數字
在那個格子裡,依序嘗試 1 到 9。針對每個數字,檢查它是否已經出現在同一列、同一行或 3×3 區塊中。
-
放入有效的數字
如果該數字不會與既有數字衝突,就把它放入格子並前進到下一個空格(回到步驟 1)。
-
遇到死胡同就回溯
如果在當前格子裡 1 到 9 都放不下,這個數獄就走進了死胡同。把上一個放入的數字移除(重設為 0),然後回到前一個格子嘗試下一個候選。
-
反覆執行直到解開
一直進行到沒有空格為止 — 方格已被填滿,您就找到解了。如果演算法一路回溯到第一個格子仍找不到候選,這個數獨就無解。
什麼時候該用數獨解題器?
解題器是一種工具 — 就像計算機幫忙算數,或拼字檢查幫忙寫作一樣。妥善使用,它能幫助您學習。以下是一些不錯的使用時機:
- **對答案** — 您剛解完一個數獨,想在偷看官方解答前確認所有數字都正確。
- **找出您哪裡出錯了** — 您卡住了,懷疑前面某步出錯。把解出來的方格與您的進度比對,可以瞬間找出錯誤。
- **學習新技巧** — 自己盡可能往下解,再讓解題器收尾。從解答倒推回去,理解您漏掉的是哪一種邏輯。
- **驗證自製的數獨** — 如果您自己出題(或為班級出題),解題器可以確認題目是否有唯一的有效解。
- **解開印好的數獨** — 在 可列印數獨 或沒有解答本的報紙數獨上卡住了?輸入提示數字就能得到答案。
人類解數獨的方式不同
電腦解題器使用暴力的回溯。人類無法每秒測試上百萬種組合,所以我們仰賴邏輯技巧。理解這些技巧能讓您成為更厲害的數獨玩家:
- **裸單(Naked single)** — 在排除掉同列、同行、同區塊的所有數字之後,某個格子只剩下一個候選。這是最基本的技巧,也是初學者最先學到的。
- **隱單(Hidden single)** — 在某一列、行或區塊中,某個數字只能放在一個格子裡,即使那個格子有多個候選。找出沒有其他歸宿的數字。
- **裸對/裸三(Naked pair / triple)** — 同一單位中的兩個格子恰好擁有相同的兩個候選。這些數字被「綁」在那兩個格子上,可以從同單位的其他格子刪除。三個一組也是同理。
- **指向對(Pointing pair)** — 在一個區塊中,某個候選只出現在某一列(或行)。這表示該數字在區塊外的那一列(或行)中也不能出現。
- **區塊/行列消去** — 與指向對相反。在一列(或行)中,若某個候選只出現在一個區塊內,就可以從那個區塊的其他格子中刪除該候選。
- **X-Wing** — 某個候選在兩個不同列中分別只出現在恰好兩個格子裡,且這些格子共用相同的兩行。該候選可以從那兩行的其他所有格子中刪除。
一個數獨需要多少個提示?
一個有效的 9×9 數獨必須恰好有一個解。數學家已經證明,要保證有唯一解所需的最少提示數是 17 個。從未有人找到一個只有 16 個提示卻具有唯一解的數獨 — 而 2012 年由都柏林大學學院(University College Dublin)的 Gary McGuire 團隊以計算方式證明了這樣的數獨並不存在。
在實務上,大多數出版的數獨擁有 22 到 36 個提示。簡單的可能會給出 36 到 40 個數字,只剩半個方格要填。難的可能只給 22 到 24 個,需要長串邏輯推理。
我們的解題器在嘗試求解前會要求至少 17 個數字。如果您輸入太少,這個數獨幾乎一定會有多解,解題器就會提示您再多輸入一些。
輸入數獨時的常見錯誤
解題器會說「找不到解」最常見的原因就是輸入錯誤。常見的元兇有:
- **數字看錯** — 把 6 寫成 9,或把 1 寫成 7。請仔細檢查解題器標紅的格子。
- **列或行錯位** — 把數字放在比正確位置左邊或右邊一格的地方。從方格邊緣仔細數過去。
- **漏掉提示** — 漏看印刷數獨上的某個數字。如果解題器給的答案和預期不同,常常是漏輸入某個提示。
- **輸入了自己的猜測** — 只輸入原本的提示,不要輸入您自己已經推導出來的數字。如果其中有猜錯,解題器就會失敗。
9×9 之外的解題器
回溯技巧適用於任何基於約束的拼圖,不只是標準的 9×9。同樣的演算法也能解:
- **4×4 與 6×6 方格** — 給較小孩子的小型數獨。試試我們的 4×4 數獨 和 6×6 數獨。
- **殺手數獨** — 每個籠子還必須加總到指定的目標。求解時要把數獨邏輯與一點算術結合。可玩 殺手數獨。
- **拼圖數獨** — 區塊是不規則形狀而非長方形。列與行的規則不變。可玩 拼圖數獨。
- **16×16 與 25×25 方格** — 巨型數獨會用字母或十六進位數字搭配數字。同樣的回溯方法可行,但解題時間會隨著大小增加。
- **武士數獨(Samurai Sudoku)** — 五個 9×9 方格透過共用角落區塊互相重疊。解題器把共用格子當作同時屬於兩個方格。
目前這個解題器是為標準的 9×9 方格設計的 — 也是目前最熱門的尺寸。未來我們可能會加入對其他變種的支援。
比起解題,更想玩數獨嗎?
常見問題
這個數獨解題器真的免費嗎?
是的 — 完全免費,不需要註冊,方格上方不會有廣告,也沒有使用次數限制。想用幾次就用幾次。
解題器有多快?
解題器使用回溯演算法,通常不到 10 毫秒就能找到解 — 幾乎是瞬間。連目前已知最難的 9×9 也能在不到一秒內解開。
解題器能處理任何 9×9 數獨嗎?
可以。只要存在有效解,解題器就會找到。如果這個數獨無解(例如因為輸入錯誤),它會通知您。如果有多個解(提示太少),它會回傳其中一個。
為什麼會說「找不到解」?
幾乎都代表某個數字被放在錯誤的格子中。檢查紅色衝突,或清除方格後再仔細地重新輸入這個數獨。
最少需要幾個提示?
一個有效且具有唯一解的 9×9 數獨至少需要 17 個提示。這在 2012 年已被數學證明。我們的解題器在嘗試求解前會要求至少 17 個數字。
解題器在手機上能用嗎?
可以。方格與數字鍵盤都是為觸控螢幕設計的。點選格子、點選數字、點選「求解」 — 任何裝有現代瀏覽器的裝置都能使用。
可以用它來檢查我自己的解嗎?
當然可以。只輸入原本的提示(不要輸入您的猜測),按「求解」,再把結果與您填好的方格比對。
解題器使用什麼演算法?
使用回溯 — 一種深度優先搜尋,會在每個空格嘗試 1 到 9,一旦違反約束就回溯。這是標準做法,在 9×9 方格上速度極快。
它能解殺手數獨或拼圖數獨嗎?
目前還不行 — 這個解題器是為標準的 9×9 方格設計的。殺手與拼圖變種有額外的約束,需要修改過的演算法。我們未來可能會加入變種解題器。
使用解題器算作弊嗎?
要看您的目標。如果是學習,解題器很適合用來對答案、找出錯在哪裡。如果是比賽或限時挑戰就沒意義了。我們建議先試試主遊戲的「提示」功能 — 一次只揭示一格,這樣您仍能自己解完其他部分。
線上玩數獨
解完了嗎?來玩玩我們的免費數獨吧。