24 遊戲是一道數學謎題:給定四個整數與四則基本運算,找出一個恰好等於 24 的算式。搜尋「24 遊戲解法」會得到一些可運算的算式,這些算式會把每個數字各用一次,並結合加、減、乘、除和括號,但不做數字拼接、次方、階乘、根號,也不重複使用數字。24 Game Solver 嚴格遵守這套規則。它接受 1 到 99 之間的四個整數,以精確的分數(而非二進位浮點數)窮舉所有合法的配對與分組方式,並列出最多 50 個等於 24 的算式。若頁面回報沒有結果,代表徹底搜尋已涵蓋所有允許的組合卻一無所獲,這是真正的分類結果,而非工具提早放棄的跡象。這四個數字從不離開瀏覽器,因此無論是課堂練習、解題訓練或競技對決,都能自由地測試每一手牌,完全不需要帳號或上傳。

24 遊戲解法必須遵守的規則
標準的 24 遊戲謎題,根據 加州大學聖克魯茲分校數學計畫的記載,玩家須拿四個數字,並用加、減、乘、除和括號把它們結合起來,使算式恰好等於 24。四個數字各必須使用一次且僅使用一次。除此之外不加入任何東西:不拼接數字、不使用次方、不使用階乘、不使用根號、不把單目負號視為獨立運算,也不重複使用任何數字。
24 Game Solver 不打折扣地遵守這份契約。頁面接受 1 到 99 之間的四個整數,僅套用四則基本運算,並要求每個中間值同樣必須由這些運算合法構成。這套規則比部分課堂變體更嚴格,而且這是刻意為之。正因為規則更嚴格,「無解」才會是一個有意義的裁定:若搜尋回報空白,便代表在文件記載的規則下,沒有任何組合能得出 24。
商業版本有時會放寬或收緊數字範圍;有些紙牌組從 1 到 10 抽牌,有些則從 1 到 13。本求解器刻意接受更廣的 1 到 99 範圍,以涵蓋教科書與線上謎題變體,同時仍維持標準的運算契約。
| 規則要素 | 標準 24 遊戲(依 UC Santa Cruz) | 24 Game Solver 接受 | 本求解器以外 |
|---|---|---|---|
| 每手數字數 | 4 | 4 | 其他數量 |
| 每個數字的使用 | 恰好一次 | 恰好一次 | 重複或略過 |
| 允許的運算 | +, −, ×, ÷ | +, −, ×, ÷ | 次方、階乘、根號 |
| 括號 | 允許 | 允許 | — |
| 數字拼接 | 不允許 | 不允許 | 拼接後的數字 |
| 單目負號作為獨立運算 | 不允許 | 不允許 | 將 −x 視為免費步驟 |
| 數字範圍 | 依版本而異 | 1–99 | 0、負數、小數 |
如何輸入一手牌並讀取結果列表
- 在瀏覽器中開啟 24 Game Solver。
- 每個欄位各輸入一個整數,總共輸入四個整數。每個數字必須介於 1 到 99 之間。不可留白、不可為零、不可為負數、不可為小數。
- 選擇 Solve。求解器會窮舉搜尋所有允許的分組與運算,然後回傳結果列表。
- 由最內層的括號向外讀取每個回傳的算式。每個算式都以「= 24」結尾,因此可直接驗算候選解,而不必把它視為不透明的「成功」訊息。
- 若頁面回報無解,請將此視為顯示規則下的最終裁定:徹底搜尋後未發現任何等於 24 的有效算式。
在課堂或解題練習時,可先在按下 Solve 之前自行嘗試一手牌,再與回傳的列表對照。括號至關重要:它揭示運算順序,不可隨意移除。允許次方、階乘或重複數字的謎題是另一道題目,可能會有這個刻意受限的求解器不會顯示的解答。
為何分數運算是正確與遺漏之間的差別
有幾個廣為人知的 24 遊戲牌組只能靠分數形式的中間值才解得出來。3, 3, 8, 8 就是經典例子:已知有一種標準解法會在最後的外部減法與除法收束之前,使用 8/3 作為中間值,因此任何只測試由左至右整數組合的求解器,都會把 3, 3, 8, 8 誤判為無解,雖然在標準規則下其實是可解的。
24 Game Solver 透過將每個中間結果儲存為最簡分數來避開這種錯誤:以整數分子搭配正整數分母,且兩者皆維持在 JavaScript 安全整數範圍內。每一步,求解器會以分子與分母的最大公因數進行約分,再以「分子 = 24 × 分母」來檢查最終值。這帶來兩個結果:第一,僅僅「接近」24 的值——例如 23.9999999——永遠不會被視為恰好等於,因為等式檢查是精確的。第二,仰賴無限循環小數中間值的有效解法,也不會因捨入誤差而流失,因為分數會以符號形式保留到最後一次比較。
搜尋如何窮舉每種配對與分組
遞迴程序從池中的四個輸入數字開始。它從池中選取每個無序配對,分別以加法與乘法、兩種順序的減法,以及兩種順序的非零除法將兩個被選數字結合,再把每個結果與未選中的數字一併放回池中。同樣的程序以三個數字重複進行,再以兩個數字進行。當池中只剩一個項時,便將該項與 24 進行比對。
配對與括號結構會一併窮舉,這就是為何需要巢狀括號的牌組(例如 3, 3, 8, 8)也能被找到。算式以字串形式儲存,括號會保留下來;最終列表會去除重複,先依長度、再依地區排序,最多保留 50 筆結果以維持頁面可讀性。這個上限並不會改變可解性,只是避免某一手牌因等價形式過多而把畫面塞滿。
驗證求解器規則確實有效的測試牌組
有幾手牌可作為求解器的基準測試,並已與 4nums 24 Game 求解器在相同規則下獨立交叉驗證:
- 1, 2, 3, 4 — 必須有解。把四個數字全部相乘的簡單構造,可驗證基本的乘法路徑。
- 3, 3, 8, 8 — 必須有解。標準解法需要一個分數形式的中間值,這會測試分數處理路徑。
- 1, 5, 5, 5 — 必須有解。其分數形式的中間值會以不同的型態再次測試分數路徑。
- 1, 5, 11, 13 — 必須保持無解。在標準的四則運算規則下,這手牌沒有任何等於 24 的有效算式。
當兩個分類結果一致時,該手牌在標準 24 遊戲規則下的裁定即告確立。
當「無解」才是真正的答案
無解結果並非搜尋失敗。求解器會對四個輸入數字窮舉列舉所有允許的運算與分組,因此「無解」裁定代表在顯示的規則下,該手牌確實無法得出 24。作為對照,1, 5, 11, 13 在標準 24 遊戲規則下是知名的無解牌組,而 1, 5, 5, 5 則可解。
在採信此裁定之前,可做兩項實務檢查:
- 確認四個數字已正確抄寫。單一數字的筆誤就可能改變裁定。
- 確認來源謎題採用相同的運算規則。允許次方、階乘、重複數字或拼接的變體是另一道題目;由於這超出文件記載的契約範圍,求解器會刻意對其回報無結果。
求解器所強制實施的實務限制
頁面將輸入上限設為 99,並要求正整數,因此中間乘積永遠不會逼近 JavaScript 的不安全整數範圍。結果列表上限為 50 個算式,因此即使某手牌有大量等價形式,回傳的頁面仍然易讀。不需要登入,沒有使用次數限制,四個數字也只留在瀏覽器中:不會上傳、不會儲存、不會綁定帳號。
求解器不會產生隨機謎題、不會評定難度、不會教學保證最短的構造,也不會驗證玩家已經輸入的算式。它只專注回答一個問題:對於玩家提供的這四個數字,在標準規則下能否得出 24,以及哪些算式可以展示這個答案。
如需更深入的說明,請參閱 24 Game Solver:對任意四個數字的徹底搜尋。
如需更深入的說明,請參閱 如何在瀏覽器中計算日常數學。