
《數獨》是 PiuPiu Games 的經典 9×9 數獨網頁遊戲,從「入門」到「傳奇」共 10 級難度。我們的數獨沒有預先存好的題庫,每一題都是在你的瀏覽器裡當場生成的。這篇手記說明三件事:題目怎麼生成、怎麼保證只有一個解,以及 10 級難度到底是用什麼標準分出來的。
數獨的規則只有一句:每一行、每一列、每一個 3×3 宮格,都要剛好填入 1 到 9。但一題「好」的數獨還有一個沒寫出來的條件:答案只能有一個。
如果一題有兩個解,玩家解到最後一定會卡在某幾格:兩個數字放哪邊都合規則,只能用猜的。猜對了沒有成就感,猜錯了還會被判錯,這會破壞數獨最迷人的地方——每一步都可以靠推理得出來。所以我們訂下第一條規矩:每一題都必須經過驗證,確認只有唯一解,才會出現在你面前。
生成一題數獨的方法,其實是倒過來做的:
檢查唯一解的方法,是讓電腦用最直接的方式把所有可能填法都試一遍,但只要找到第二個解就立刻停止——我們不需要知道有幾個解,只要知道「是不是剛好一個」。這讓每一次檢查都很快,整題可以在瀏覽器裡即時完成,不需要等待。
另外,同一個亂數種子一定會生成同一題。這讓「進行中的題目自動存檔」能夠運作:你中途關掉網頁,20 小時內回來,看到的會是原本那一題。
最直覺的難度標準是開局已經填好的格數,我們稱為「提示數」。我們的 10 級提示數是這樣遞減的:
(第 6 級起允許多 1 格,所以第 9 級偶爾會出現 26 格、第 10 級偶爾會出現 25 格的題目。)
但只看提示數是不夠的。實際測試時我們發現,兩題提示數一樣多的數獨,難度可以差非常多:有的題目每一步都有一格「明顯只能填這個」,可以一路順順地填完;有的題目填到一半就沒有明顯的下一步了,必須用更進階的推理技巧,甚至要同時考慮好幾格的可能性。對玩家來說,難不難的感受來自「卡住的次數」,而不是空格的多寡。
所以我們加了第二個標準。數獨最基本的推理技巧有兩種:
每生成一題,我們都讓一個「只會這兩招」的解題程式去解它:
生成時如果挖出來的題目分級不符——例如第 8 級的題目太順、或第 5 級的題目卡住了——就整題丟掉,換一個新的終盤重來。每次調整難度表,我們都會讓驗證程式在每一級批次生成多題,逐題確認唯一解、提示數在目標範圍內、分級正確,而且生成時間夠短,全部通過才會上線。
「提示數不能單獨代表難度」不是一句口號,我們用出題程式本身量過。做法是:每一級各生成 300 個完整終盤,照該級的目標提示數挖洞,然後不做任何篩選,直接交給「只會唯一候選和隱性唯一」的解題程式去解,看有幾成解得完。
| 難度 | 目標提示數 | 挖完直接用兩招解得完的比例 | 這一級要的題目 | 一次就合格的比例 |
|---|---|---|---|---|
| 1 入門 | 47 | 100% | 解得完 | 100% |
| 3 初階 | 39 | 約 99.7% | 解得完 | 約 99.7% |
| 5 熟練 | 33 | 約 96% | 解得完 | 約 96% |
| 6 高手 | 30 | 約 83% | 解得完 | 約 83% |
| 7 專家 | 28 | 約 74% | 解得完 | 約 74% |
| 8 大師 | 27 | 約 65% | 解不完 | 約 35% |
| 9 宗師 | 25 | 約 50% | 解不完 | 約 48% |
| 10 傳奇 | 24 | 約 41% | 解不完 | 約 50% |
這張表說明了兩件事。第一,就算只剩 24 個提示,仍然有四成左右的題目只靠兩個基本技巧就能解完——如果我們只看提示數,第 10 級每出十題,就會有四題其實「不難」。第二,第 7 級和第 8 級只差 1 個提示,但第 8 級要把約三分之二的候選題丟掉,只留下真的會讓人卡住的那幾題。玩家感受到的那道「從第 8 級開始突然變難」的牆,就是這樣刻意做出來的,不是提示數少 1 格自然產生的。
反過來看前 5 級:挖到 33 格以上,幾乎每一題都天生解得完,篩選只是保險。真正需要篩選把關的是第 6、7 級:大約每五題就有一題,在 28~30 個提示下會出現基本技巧用不上的地方,我們把這些題目擋掉,才能讓「前 7 級永遠找得到下一步」這個承諾成立。
數學上已經證明,有唯一解的數獨最少需要 17 個提示。那為什麼我們最難的一級只挖到 24 格?
原因在挖洞法本身。我們的方法是「隨機一格一格拿,拿了會出現第二個解就放回去」,它會在某個時刻卡住:剩下的每一格,拿掉都會破壞唯一解。我們用同一套方法拿 200 個終盤一路挖到挖不動為止,最少停在 21 格,最多停在 27 格,一半的終盤挖到 24 格左右就再也挖不下去。也就是說,24 格已經貼近這種挖法的天然極限;要挖到 17、18 格,得換成專門搜尋稀疏題目的方法,生成時間會長到無法在瀏覽器裡即時完成。
這也是為什麼後 5 級允許多 1 格:到了第 10 級,大約每七個終盤就有一個挖不到 25 格以下,與其讓玩家等,不如換一個終盤重來。生成程式最多會重來 400 輪,實際上平均兩、三輪就會成功;我們在測試電腦上每一級連續生成 20 題,第 10 級平均每題約 16 毫秒、最慢約 57 毫秒,按下開始的瞬間題目就出來了。萬一 400 輪真的用完(實際上幾乎不可能),程式會交出最後一題,它仍然保證唯一解,只是分級可能略偏。
10 級難度不是一開始就全部開放的。要解鎖下一級,需要在目前的難度:
為什麼要加「完美」這個條件?因為每題有 3 次提示,提示會直接填入正確答案。如果靠提示就能一路晉級,玩家可能在還沒學會推理的時候就被送到第 8 級,然後在燒腦級整個卡死。要求至少一題完美,等於確認「你已經能靠自己解完這個難度」,再往上走。練習的時候可以放心用提示學習思路,正式衝級時再全程手解。
填錯也有規則:填錯一次記一次錯誤,錯滿 3 次這題就失敗。這不是為了懲罰,而是鼓勵把不確定的數字寫成筆記,而不是用試填去賭運氣。我們的筆記功能會自動排除:你在某一格填入數字時,同行、同列、同宮裡筆記中的同一個數字會自動消掉,省去大量手動整理的時間。
錯滿 3 次失敗時,可以看一次廣告,原題繼續解。上線初期,續題會把錯誤次數整個歸零,結果出現一個沒想到的後門:玩家錯了 3 次、看廣告續題、錯誤變成 0,解完之後這題竟然被算成「零錯誤」,可以拿來滿足晉級要的完美解題。
2026 年 10 月我們做全平台的資料一致性檢查時發現了這件事,改成把錯誤分成兩個數字:一個是「這一輪還能錯幾次」,續題時歸零,讓你有機會把題目解完;另一個是「這一題總共錯了幾次」,永遠不歸零,計分扣分、完美判定和上傳成績一律看這一個。所以現在續題後雖然可以解完,但這題不會再算完美,錯誤扣分也照算。遊戲裡的失敗視窗也同步改了說明文字,讓你在看廣告之前就知道這個代價。
提示的設計也有一個小細節:如果你按提示時沒有選任何格子,程式會挑盤面上「候選數字最少」的空格幫你填。那通常就是整個盤面裡最關鍵、最卡的一格,3 次提示用在那裡,最能幫你把題目推下去。
平台上有些遊戲刻意不存進行中的盤面,例如對對碰。數獨我們做了相反的決定:進行中的題目會自動存檔,20 小時內回來都能接著解,不會再扣一次愛心。
理由是一題數獨的時間長度。高難度一題可能要十幾、二十分鐘,中途接個電話、搭車到站就得關掉網頁;如果因此整題作廢,對任何年紀的玩家都太不友善。存檔能這麼輕巧,靠的正是前面說的「同一個種子一定生成同一題」:我們只要記住種子、你已經填的數字、筆記、提示與錯誤次數和已用的時間,回來時把題目重新生成一次就好,不必把整個題目和答案存在你的裝置上。至於為什麼是 20 小時而不是 24 小時:每局開始時伺服器發給這一局的憑證有效 24 小時,我們留了 4 小時的餘裕,確保你在期限內解完一定能正常上傳成績。
單題分數由四個部分組成:難度基礎分是「難度 × 1000」;如果比標準時間快,每快 1 秒加 3 分;每用一次提示扣 300 分、每填錯一次扣 150 分;分數最低不會低於「難度 × 100」。標準時間從第 1 級的 330 秒開始,每升一級多 90 秒,到第 10 級是 1140 秒。
排行榜先比你解開過的最高難度,同難度再比單題最高分。這樣排名主要反映「你能解到多難」,速度只是同級之間的比較,不會讓一位快手在第 3 級的分數贏過一位慢慢解開第 9 級的玩家。
2026 年 10 月底我們加了每日挑戰:每天一題,以台灣日期換日,全世界的玩家拿到同一題。這件事能做到,也是因為生成器「同種子同題」——我們不需要每天把題目傳給每個人,只要大家用同一天的日期當種子,各自的瀏覽器就會生成一模一樣的數獨。
難度依星期幾固定,從週一的第 2 級一路爬到週六的第 7 級,週日是一週裡唯一的第 8 級(詳細對照見攻略的每日挑戰章節)。這樣排的用意是讓一週有節奏:平日每天稍微難一點,週日留一題需要進階技巧的題目,給還沒升到第 8 級的玩家一個免費試試燒腦級的機會。
每日挑戰刻意做得很輕:不扣愛心、不上排行榜、也不算進 10 級晉級的進度,只記你自己的連續天數。結算時只放一顆「分享結果」,用文字和星星表示成績,沒有另外放圖片成績卡,因為兩顆分享鈕並排容易讓人分不清該按哪一顆。每日專屬的排行榜要另外建資料表,我們決定等玩每日挑戰的人多起來再做。
數獨是一個規則幾乎不用改的經典遊戲,我們能做的,是讓每一題都「公平」:保證有唯一解、保證難度標示可信、保證你卡住的時候,是因為還沒看到那一步,而不是題目出錯。如果你是第一次玩,從第 1 級開始,熟悉唯一候選和隱性唯一這兩個技巧,到了第 7 級,你會驚訝自己已經能在 28 個提示裡一路推理到底。
讀完幕後,實際玩一局
免下載、免安裝,手機與電腦瀏覽器直接玩
▶立即免費玩數獨