在 Number Fill-In Puzzle 中選擇你的下一步,代表要根據周圍已存在的行與欄,決定六個可編輯格子中要填入哪一個,以及在該格放置哪個數字。棋盤是個緊湊的 3×3 方格,其中三個對角線上的 1 是固定的已知數;你需要在剩下的六格中填入 1、2 或 3,使每行與每欄都恰好包含這些數字各一次。每次填入都會立即檢查,若行或欄中出現重複的非零數字,會立刻觸發矛盾,因此方格本身就會告訴你哪一步是錯的。決策框架因此比大型邏輯謎題更簡單:總共只有六步,已知數不會改變,每次編輯後都會進行驗證,所以你可以選擇提交、更正或重新開始。你的下一步,就是讓你剩下最少矛盾、且最乾淨地走向某一行讀作 1、2、3、某一欄也讀作 1、2、3 的那一格。

how do i choose my next step in number fill in puzzle
在 Number Fill-In Puzzle 中選擇你的下一步

棋盤如何決定每一個決策

你在 Number Fill-In Puzzle 上的第一個決定並不是要走到哪裡,而是要看哪裡。整個方格只有九格,分成兩組:三個深色對角線上的 1 不能更改,六個可編輯格子一開始是空的。驗證器將 0 視為空格,因此一個全新的棋盤會顯示六個空白方格,主對角線上並排著 1。知道哪些格子是已知數、哪些是空格,就能把整個棋盤壓縮成一組可能的線:三行、三欄,以及六個交點。你的下一步問題,總是針對這六個交點之一提出。

每行與每欄最終都必須形成多重集 {1, 2, 3}。每個對角線上的 1 都已經為其所屬的行與欄貢獻一個 1,這表示每行每欄仍需要一個 2 和一個 3 才算完整。在你按下數字鍵之前,這個觀察就能縮小你的選擇:在任何已經放有 1 的行或欄中,剩下的兩格絕不能同時是 2,也不能同時是 3,否則會缺少一個值。先看對角線,再問每行每欄還欠什麼,是驅動每一步的結構化捷徑。

由於三個已知數是永久的,在遊戲過程中無法更改;驗證器要求它們保持完整。若想更完整地了解為何這三格會一直被鎖定,配套指南 Number Fill-In Puzzle:為何已知格不能更改 會逐步說明保護它們的驗證規則。

在按下按鍵之前先讀懂行與欄

在你決定提交一步之前,先看看你所選格子的行與欄。驗證器會檢查六條由三格組成的線——三行與三欄——而一次填入只有在同時滿足兩者時才算安全。若某行已在他處放有 1 與 2,當第三格被填入 2 時就會立刻失敗,因為該行會出現兩個 2。對欄而言也是如此。將每個候選格視為兩條限制的交會點,是選擇不需要撤銷之步驟的最快方法。

方格會透過對比的表面來呈現其狀態。已知格使用與可編輯格不同的背景,矛盾標記則會使用視覺警告,讓出錯的行或欄一目了然。鍵盤焦點外框也會顯示方向鍵即將編輯哪一格,避免你不小心填錯方格。語意化的 CSS 格狀介面會向輔助科技宣告行、欄、已知狀態、目前值與選取狀態,因此你做下一步決策所需的資訊永遠都是可見的。

由這樣的可見性可衍生出兩個實用捷徑。第一,掃描任何已包含兩個不同非零數字的行或欄;這些線只能接受第三個值,因此若要安全填入,屬於這些線的格子必須填入那個缺失的數字。第二,若兩條線都還沒有兩個不同的非零數字,則每個數字在該線中仍然可用,你的選擇要由垂直的那條線決定,而非你正在掃描的線。大多數的策略性決策其實都出現在第二種模式中。

在 Number Fill-In Puzzle 中選擇下一個填入

填入六個可編輯格的順序並不會改變最終的方格,但會改變你所進行的編輯次數,進而影響分數。最快的路線使用六次填入,每個可編輯格填一次,並從起始分數 1,000 得到 940 分。以下是選擇每一次填入的具體步驟。

  1. 使用方向鍵將可見的選取位置移到你一眼就能讀出其行與欄的可編輯格,理想上是與對角線 1 相鄰的角落格。
  2. 檢查該行:若已放有 1 與 2,則該格唯一安全的值就是 3,按下 3。若已有 1 與 3,按下 2。若只有空白或僅有一個非零值,則該行尚未強制決定該值。
  3. 使用同樣的強制數字規則檢查該欄。若該行與該欄強制出相同的數字,按下該數字並繼續。
  4. 若只有其中一條線強制出數字,按下該數字;另一條線稍後將由相鄰的格子滿足。
  5. 若兩條線都沒有強制出數字,則從 1、2、3 中任選一個不會與任一線中已放置數字重複的值。按下 1、2 或 3 進行填入,然後觀察該格或其行是否出現矛盾標記。
  6. 若出現矛盾,按下 Backspace 或 Delete 清除該格,以相同邏輯移至另一個可編輯格並繼續。若棋盤陷入混亂,請使用重新開始。

使用滑鼠與觸控的玩家則透過點擊可編輯格,在同樣的三個值之間循環,因此無論輸入方式為何,決策順序都完全相同。選取狀態、可編輯標記與矛盾外框會在每次編輯後更新,這表示你的下一步永遠會依據最新的棋盤狀態來決定。

強制步、自由步與應避免的事

在 Number Fill-In Puzzle 中的每一步都屬於三種類型之一:強制步、自由步或錯誤步。強制步是指其行與欄合計只剩下唯一安全值的格子;填入它不會在任一線中產生重複。自由步是指其行與欄合計仍允許多於一個值的格子;你可以填入任何不會與那些線中既有數字重複的數字,且這個選擇只會影響你未來的可填空間。錯誤步則是指任何在行或欄中產生重複的填入,驗證器會立即標記出來,你應該將其撤銷而不是繼續往下做。

兩個實用的啟發式原則能減少錯誤步。第一,優先填入已經有兩個不同已放置數字的線中的格子,因為此時的值是強制的,填入不可能產生新的重複。第二,當強制步與自由步同時存在時,先採強制步;它能鎖定某行或某欄,並縮小下一步的搜尋空間。自由步最好留到最後兩三格再做,此時方格大部分都已經被限制,自由選擇也很明顯。

無論採取何種策略,有兩種模式值得避免。不要把只含有例如 1 與 3 的部分行視為第三格一定是 2 的保證;它也可以留空,直到該欄強制出某個值為止,而驗證器將 0 視為空白而非錯誤。不要因為看到矛盾標記,就假設最近編輯過的那一格一定是錯的;實際的重複可能位於同一行的另一格,因此有時要撤銷正確的格子,必須掃描整條線,而不僅僅看最後一次編輯。

解讀分數與驗證回饋

Number Fill-In Puzzle 的分數從 1,000 開始,其計算方式為 max(0, 1000 − 10 × edit actions)。「編輯動作」會計算對可編輯格的每一次變更,包括使用 Backspace 或 Delete 進行的更正,因此一條乾淨的六步填入路線會得到 1000 − 10 × 6 = 940。若中途多做兩次更正,分數會降至 1000 − 10 × 8 = 920。這個公式因此直接代表你需要做幾次撤銷決策,最乾淨的路徑就是每一步都在第一次就填對。

編輯動作計算方式最終分數
6(乾淨路線)1000 − 10 × 6940
8(兩次更正)1000 − 10 × 8920
10(四次更正)1000 − 10 × 10900

然而,驗證會在每次編輯後執行,它是與分數不同的獨立訊號。一個含有兩個不同已放置數字的不完整行仍然是有效的,因此沒有矛盾標記並不代表該行已完成;它只代表目前尚未違反任何規則。反過來說,矛盾標記是一個立即的硬性訊號,表示該行或該欄中存在重複,而非提示你接下來該嘗試哪個數字。對回饋最乾淨的運用方式,是把分數視為衡量你選擇下一步有多果斷的指標,並把矛盾標記視為清除受影響行或欄中重複項目的訊號。

格子狀態視覺提示對你下一步的意義
已知對角線 1對比表面,不可編輯永久;無法更改;會計入行與欄的總和
空白可編輯素色可編輯背景,值為 0可自由填入;驗證器將檢查此次填入
已填可編輯(有效)可編輯背景,非零值此次填入目前與該行該欄一致
已填可編輯(矛盾)該格或該線上的警告指示同一行或同一欄中存在重複;請用 Delete 清除

最佳完成分數只會儲存在你的瀏覽器中,因此每次遊戲都會從 1,000 重新開始,你選擇下一步的嚴謹程度會在每次重新開始時重新被衡量。

重新開始、老闆鍵與謎題完成檢查

三個實用的控制項完善了決策流程。重新開始會還原三個對角的提示格,清除所有六個可編輯的格子,將選取與分數重設為 1,000,並移除任何矛盾標記。當需要變更的格子超過一個時使用它,因為一連串的復原動作可能會使分數向下偏移,卻無法將盤面恢復到乾淨狀態。

老闆鍵是連按兩下 Escape,會開啟一個共用的模擬試算表覆蓋層;再次連按兩下 Escape 則會讓你回到同一個謎題狀態,選取與已填入的值都會保留。這讓你可以暫時離開盤面而不會遺失進度,因此回來時的下一步正好就是你離開時的進度。

謎題本身完成時需要九個已填入的格子、三個提示格維持不變、任何行或列中皆無重複數字,且每個行與列的總和為 6,這正好對應到每個行與列中包含一個 1、一個 2 和一個 3 的條件。一個有效的解答在各行中讀作 1-2-3、3-1-2 或 2-3-1,當反向排列同樣滿足上述公開的限制時也會被接受。驗證程式會檢查規則本身,而非隱藏的答案字串,因此任何保留提示格並遵守行列規則的完成盤面都會被接受。

在瀏覽器中於 Number Fill-In 謎題 頁面遊玩完整的盤面,頁面中每種輸入方式、矛盾標記、分數更新以及上述的重新開始手勢都已整合在同一個介面中。你所選擇的每一步都會依據公開的規則進行檢查,而你面對的下一步永遠是剩餘開放決策最少的那一步。

相關閱讀:簡易一筆畫謎題:解開 8 個節點的圖形。