ARCADE ▶ GUAVA SUDOKU

芭樂數獨

經典數字推理遊戲!把 1~9 填進 9×9 的盤面,每一列、每一欄、每個九宮格都不能重複。點格子會把它影響到的整列、整欄和九宮格反灰,填完一整條還有閃光特效。共五種難度,每一題都是電腦現場出的,而且保證只有一個答案。

  • 點格子選取、點下方數字填入
  • 「擦」:清掉這格
  • 「筆記」:切換成小字筆記
  • 「復原」「提示」
  • 鍵盤:方向鍵移動、1~9 填入、0 或 Backspace 清除、N 筆記、Z 復原
  • 「全螢幕」按鈕

玩法說明

把 1~9 填進盤面上的空格,讓每一個橫列、每一個直欄、每一個 3×3 的九宮格裡,1~9 都剛好出現一次,不能重複。盤面一開始就有的黑色數字是題目給的,不能改。

反灰提示

點一下格子,這一格所在的整列、整欄和九宮格會變成灰色,就像一個十字加上一個方塊。這些灰色的格子裡已經出現過的數字,這一格就不能再填。

如果這一格已經有數字,盤面上所有相同的數字會亮綠色,方便你一眼看出這個數字還缺在哪裡。

填數字

  1. 點一個空格(會變成黃色)。
  2. 點下方的數字鍵填入。數字鍵右下角的小數字,是這個數字還剩幾個沒填,全部填完的數字會變暗。
  3. 填錯的數字會變紅色,上方的「錯」會加 1。填錯不會結束遊戲,改掉就好。
  4. 按「擦」可以清掉自己填的數字或筆記。

筆記

按下「筆記」(變成「筆記 ON」)之後,點數字鍵會在格子裡寫上小小的候選數字,再點一次同一個數字就會擦掉。之後在同一列、欄、九宮格填入正確的數字時,相關的筆記會自動清掉。

復原與提示

  • 復原:回到上一步,可以一直按。
  • 提示:直接幫你填好選取的格子;沒有選取格子時,會隨機幫你填一格。用了幾次提示會顯示在上方。每用一次提示,完成時間會多加 30 秒,所以想挑戰紀錄就盡量少用。

完成特效

  • 填完一整個橫列、直欄或九宮格,而且全部正確時,那一條會從剛填的格子往外依序閃光、噴出小星星,中間會跳出「橫列完成!」之類的字。一次完成好幾條,特效會一條接一條播。
  • 整盤完成時,會從左上角到右下角跑一次彩色閃光,再放煙火。

難度

難度 題目給的數字
簡單 約 42 格
普通 約 34 格
困難 約 29 格
特難 約 25 格
地獄 約 22 格

給的數字越少,能直接推理出來的地方就越少,需要用筆記和更進階的技巧。每種難度的最快完成時間會分開記錄。

開發筆記

每一題都是現場出的

這款沒有題庫,每次按下難度,電腦都會現場出一題新的:

  1. 先做出一個完整的答案:從左上角開始,每一格把 1~9 打亂順序後依序嘗試,遇到不能放的就退回上一格(回溯法),很快就能填滿一個合法的盤面。
  2. 再一格一格挖空:每挖掉一個數字,就用解題程式檢查「剩下的題目是不是還是只有一個答案」。如果挖掉之後變成有兩種以上的解法,就把數字放回去,換下一格試。
  3. 挖到目標的格數就停下來,這就是題目。

為什麼要保證唯一解

數獨的樂趣在於「每一步都能推理出來」。如果題目有兩個答案,玩家推到最後會發現某幾格怎麼想都可以填兩種數字,只能用猜的,體驗很差。所以解題程式找到第二個解就會立刻停下來回報「不唯一」,不用把所有解都找完,速度很快。

解題程式本身用了兩個小技巧:每一列、欄、九宮格用一個整數的位元記錄「哪些數字用過了」,檢查只要一次位元運算;每次都先挑「可以填的數字最少」的空格下手,大幅減少要試的組合。

地獄難度怎麼挖到 22 格

一開始我用「對稱挖洞」,每次同時挖掉中心對稱的兩格,盤面比較好看。但測試時發現,困難以上的難度常常挖到 28 格左右就挖不下去了。後來改成:對稱挖完之後,再一格一格補挖;如果還是沒達到目標,就重新出幾題,挑給的數字最少的那一題(最多花 0.6 秒)。我用程式各出了 20 題驗證,地獄難度每一題都能挖到 22 格,而且都是唯一解。

反灰和特效

點格子時的反灰,其實就是把「這一格的同儕」標出來:同一列、同一欄、同一個九宮格的格子,在程式裡叫 peers,每一格固定有 20 個。這些格子正是填數字時要檢查不能重複的範圍,畫出來剛好就是最好的提示。

完成特效則是在每次填入正確數字時,檢查這一格所屬的三個單位(列、欄、九宮格)是不是全部正確。剛完成的單位會依照「離剛填的格子多遠」排序,讓閃光從你的手指位置往外擴散,看起來比整條一起亮更有感覺。

如果你挑戰地獄難度成功了,歡迎寫信告訴我你花了多久。