在 Math Crossword 中,比較兩種解題方式代表設定同一組四個變數 —— A、B、C、D —— 並觀察哪種方法能以較少的編輯次數抵達所揭露的乾淨 960 分終點。乾淨解為 A=3、B=6、C=2、D=6,可同時滿足 2×3=6、3×2=6 與 6×2=12 全部成立。演繹法從最受限制的方程式 B×C=12 開始,僅憑這條方程式就先固定四個格子中的兩個,再處理其他變數。試誤法則先任選一個變數,一旦某個完全填入的方程式變成假,便會看到矛盾警告出現,再透過即時驗證回溯。兩種路線都會以同一個驗證器進行測試,該驗證器只在某方程式所使用的每個變數皆非零時,才檢查 2×A=B、A×C=D 與 B×C=12。比較兩者並非看哪個是正確的 —— 因為兩者皆能抵達所揭露的乾淨解 —— 而是看每種方法花費多少次變數編輯才走到終點。計分公式為 max(0,1000 minus 10 times the number of edits),因此即使兩條路線解開同一個盤面,按鍵次數較少者仍能在分數上勝出。

兩種解法背後的謎題設定
Math Crossword 是一道四格乘法一致性謎題。四個共用變數分別命名為 A、B、C、D,顯示的方程式將其串連為 2 × A = B、A × C = D 與 B × C = 12。每個變數必須為 1 到 9 之間的單一整數位數;零僅作為已清除狀態出現,驗證器會拒絕任何超出 0 到 9 範圍或非整數的輸入。變數是共用的,這也是謎題表現得像交叉表格的原因:在其中一個方程式中填入的值,會改變其他方程式的真假。
驗證器採增量式執行。三條方程式都會等到各自使用的變數皆已填入後才進行檢查。尚未完全填入的盤面永遠不會回報矛盾,即使部分填入的值仍可被修復。狀態行會在某個完全填入的方程式變成假的當下回報矛盾。該警告並非鎖定。更換或清除任何變數都會立刻重新執行所有檢查,因此矛盾盤面隨時都能恢復。
完成條件需要四個非零整數位數,並使三條方程式同時成立。沒有計時器、沒有隨機產生,也沒有外部乘法表。算術、矛盾規則與分數皆在頁面上定義。
解法一:從最受限的方程式進行演繹
演繹法將 B×C=12 視為定錨,因為它是唯一一條未引用 A 或 D 的方程式。從 B×C=12 出發,目標是在觸碰 A 與 D 之前先固定 B 與 C。
在 1 到 9 範圍內,B×C=12 所允許的有效 (B, C) 配對為 (2, 6)、(3, 4)、(4, 3) 與 (6, 2)。(1, 12) 與 (12, 1) 超出範圍,不會出現在盤面上。為了進一步縮減範圍,2 × A = B 迫使 B 必須為偶數,因為 2 與任何整數的乘積皆為偶數。這將候選集合縮減為 (2, 6) 與 (6, 2)。
為了抵達所揭露的乾淨解 A=3、B=6、C=2、D=6,演繹法先固定 B=6 與 C=2。B 為 6 時,從 2 × A = B 可知 A 必須等於 3。C 為 2、A 為 3 時,從 A × C = D 可知 D 必須等於 6。代回檢驗得 2 × 3 = 6、3 × 2 = 6 與 6 × 2 = 12 同時成立。所揭露的乾淨路線因此依 B=6、C=2、A=3、D=6 的順序,恰好花費四次變數編輯。
解法二:搭配即時驗證的試誤法
試誤法從任意處開始。先選 A,將其設為 3,接著處理 B。驗證器只有在 A 與 B 都非零時才檢查 2×A=B,因此部分填入的盤面會保持靜默。現在設定 B=6,第一條方程式變為真。A×C=D 仍為靜默因為 C 與 D 皆為空。B×C=12 亦因同樣理由保持靜默。
接著處理 C,嘗試 C=2。D 仍為空,因此目前還沒有矛盾。設定 D=6。A×C=D 變為 3×2=6,為真。B×C=12 變為 6×2=12,為真。盤面完成。若沒有任何猜測錯誤,此路線同樣花費四次編輯。
有趣的情況發生在猜錯的時候。假設 A=3、B=6、C=4,D 暫時留空。B×C=12 變為 6×4=24,為假,且驗證器在該方程式的變數皆已填入時回報矛盾。待該方程式的變數皆填入時,驗證器回報矛盾。狀態行會顯示盤面已陷入死結。將 C 替換為 2,警告會立刻清除,因為驗證器會根據目前數值重新執行所有方程式。更換或清除任何變數皆會重設警告,而部分指派 A=3、B=6 且 C、D 為空的狀態會被回報為可行。試誤法仰賴這個還原迴圈來學習是哪個變數出了錯。若想進一步了解變數層級的矛盾還原行為,可參考在 Math Crossword 中修正矛盾盤面指南,內有相同行為的詳細說明。
在同一盤面上執行兩種解法
- 開啟Math Crossword謎題。確認 A、B、C、D 起始為零,且分數顯示為 1,000。
- 演繹法部分,將選取位置移至 B 並按下 6。因為 2×A=B 的 A 仍為 0,驗證器暫不檢查。
- 移至 C 並按下 2。當兩個格子皆非零時,B×C=12 變為 6×2=12,因此第三條方程式為真,而 A 與 D 之前皆未出現矛盾。
- 移至 A 並按下 3。2×A=B 現在顯示為 2×3=6,為真。移至 D 並按下 6。A×C=D 變為 3×2=6,為真。三條方程式同時成立,分數顯示為 960。總編輯次數:四次。
- 試誤法部分,先讓 B 與 C 保持空白,移至 A。按下 3。由於僅 A 已填入,沒有任何方程式擁有它所需的所有變數,因此狀態行保持靜默。
- 移至 B 並按下 6。2×A=B 變為 2×3=6,為真。第一條方程式成立,但其他方程式仍保持靜默。
- 移至 C 並按下 2。B×C=12 變為 6×2=12,為真。移至 D 並按下 6。A×C=D 變為 3×2=6,為真。三條方程式同時成立。總編輯次數:四次。
- 若在任何步驟中,某個完全填入的方程式變為假,狀態行會標記矛盾。更換或清除錯誤的變數,警告會立刻清除。驗證器會以目前數值重新執行所有方程式,而不是記住先前的狀態。
每種解法的編輯次數與分數
計分公式是比較兩條路線最簡潔的方式。每次變數編輯會從起始的 1,000 分中扣 10 分,最終分數為 max(0, 1000 minus 10 times the number of edits)。謎題從 1,000 分開始,並在按下「重新開始」時重置,而已完成階段的最佳分數僅保存在 localStorage 中。
| 面向 | 解法一:從 B×C=12 進行演繹 | 解法二:搭配矛盾回饋的試誤法 |
|---|---|---|
| 起始變數 | B | A |
| 抵達乾淨終點的編輯次數 | 4 | 4 |
| 乾淨終點的最佳分數 | 960 | 960 |
| 過程中的主要訊號 | 方程式順序:B、C、A、D | 狀態行:出現矛盾或保持靜默 |
| 錯誤選擇後的還原方式 | 重新檢視 B×C=12 的因數配對 | 更換警告所指出的變數 |
| 超出編輯次數的風險 | 若先放置 B 與 C 則較低 | 若 A 或 C 的首次選擇錯誤則較高 |
| 最適合的玩家 | 以因數思考的玩家 | 從警告中學習的玩家 |
在所揭露的乾淨盤面上,兩條路線皆花費四次編輯,並皆以 960 分結束。分數之所以相同,是因為計分公式計算的是編輯次數,而非順序或背後的推理。若某條路線首次選擇了錯誤的變數,每次替換都會付出 10 分的懲罰,因此若試誤路線需要重做任何選擇,其分數可能會低於 960。
哪種解法符合你的風格
若你偏好先在鍵盤前思考其因數配對,請選擇演繹法。它之所以有效,是因為 B×C=12 是唯一一條不需 A 或 D 即可鎖定兩個格子的方程式,而 2×A=B 所帶來的偶數 B 限制,進一步將候選集合縮減為兩組配對。若你喜歡在碰觸鍵盤之前先在紙上縮小候選集合,此路線會以 B、C、A、D 的首次順序一路完成,從不觸發矛盾。
若你偏好從謎題本身學習,請選擇試誤法。狀態行只有在某個完全填入的方程式變為假時才會回報矛盾,因此錯誤的選擇會在所屬方程式填滿之前一直隱而不現。還原路徑永遠只在一個變數替換之遙,驗證器會立即重新執行所有方程式。此路線適合將警告視為回饋而非失敗的玩家。
兩種解法最終都會抵達同一個所揭露的乾淨解,因此唯一的實務差異在於抵達 960 分過程中的編輯次數。從未替換變數的路線會在分數上勝出;偶爾需要回溯的路線則每次替換付出 10 分懲罰,但仍能完成同一盤面。
每種解法較可能犯的錯誤
演繹法的主要風險是忘記 1 到 9 的範圍。B×C=12 在範圍內允許 (3, 4) 與 (4, 3),但只有偶數 B 的配對能通過 2×A=B 的限制。若玩家憑本能直接跳到 (3, 4),會在驗證器回報矛盾之前浪費編輯次數。在 A 被選定之前,堅持只考慮 (2, 6) 與 (6, 2),可讓候選集合保持緊縮。
試誤法的主要風險是將矛盾警告視為鎖定而非回饋。驗證器會在變數被替換的瞬間清除警告,因此若玩家在首次警告出現後就離開盤面,就會錯過可還原的狀態。更換一個變數比重啟整個謎題便宜,因為「重新開始」只會將分數重置為 1,000,並將所有格子歸零。
兩種解法共享一個陷阱:在 B 已固定的情況下變更 A,可能會立即與 2×A=B 矛盾。A=4 且 B=8 是一致的。在 B 維持 8 的情況下將 A 改為 3,會與 2×A=B 矛盾,且即使沒有任何涉及 C 或 D 的方程式是完整的,警告仍會出現。將 A 還原為 4 即可清除警告,這證明了驗證反映的是目前盤面,而非先前的盤面。
若你正在權衡選項,如何在 Number Balance 中比較兩種解法對此有詳細說明。