一個支援小數的 24 點求解器,運作方式是接受介於 1 到 99 之間的四個整數,然後在內部使用精確的分數算術,找出所有僅使用加、減、乘、除和括號把它們組合成 24 的方法。「支援小數」這個詞通常用來描述允許非遊記起始值的謎題變體,但這個特定的求解器保留標準規則集——四個整數各使用一次——並產生許多實作人手真正需要的小數值中間結果。因為它把每個中間項表示為分子為整數、分母為正整數的化簡分數,所以它能回傳像 8 ÷ (3 − 8 ÷ 3) = 24 這樣的解法,其中 8 ÷ 3 產生循環小數 2.666…,而內部的減法恰好得到 1/3。一個只測試整數算術的求解器會靜默地拒絕 3、3、8、8 這一手並回報「無解」,從而錯過一個有效的構造。以分數為基礎的方法也避免了二進位浮點數的四捨五入誤差:一個像 0.1 的值絕不會出現成 0.0999999,因此最終檢查(分子 = 24 × 除數)在含有長循環小數的牌組上依然可靠。這讓這個工具對標準撲克牌謎題和為 5 年級以上銷售的小數風味 24 點遊戲版本都很有用。

『支援小數的 24 點求解器』的真正含義
24 點遊戲,根據 UC Santa Cruz MBAMP 數學課程 的記載,是一個歷史悠久的算術謎題:給定四個數字,每個恰好使用一次,並用 +、−、×、÷ 和括號把它們結合起來,恰好得到 24。不同的商業版本會調整輸入範圍和規則集,而「分數/小數」版本允許包含非運算(例如小數)的起始值。這個 24 點求解器 刻意接受範圍上限為 99 的正整數,同時保留標準運算契約,這比任何單一紙牌組合都更為廣泛。在頁面內部,「支援小數」描述的是答案的表現方式,而非輸入的形式:像 3、3、8、8 這樣的牌組需要一個分數中間值才能到達 24,求解器會在無回應地四捨五入或浮點比較雜訊的情況下回傳那個分數。
三步驟解開一局 24 點
- 輸入恰好四個整數,每個欄位一個。每個值必須介於 1 到 99 之間(含 1 和 99)。輸入契約不接受像 1.5 這樣的小數、像 −3 這樣的負數和零——請完全按照題目所寫或卡片所示的方式貼上謎題。
- 選擇「求解」,以精確分數徹底搜尋所有允許的算術運算。求解器會在每一步嘗試每一個合法的配對、兩種減法順序,以及所有非零除法順序,並把新得到的項放回池中,直到只剩下一個數字為止。
- 從最內層的括號往外讀取每個回傳的算式,然後確認它以「= 24」結尾。如果頁面顯示輸出無解,這表示在已揭露的規則和輸入邊界下,徹底搜尋毫無所獲;把這視為該牌組的判定結果,而非工具的錯誤。
為什麼分數算術能捕捉小數式答案
3、3、8、8 這一手說明了為什麼需要以分數為基礎的求解器。一個看起來自然的嘗試是 (3 + 3 ÷ 8) × 8,但 3 + 3/8 = 27/8,而 27/8 × 8 = 27,不是 24。只檢查整數的求解器也會因為同樣的原因拒絕 8 × (3 + 3 ÷ 8)。實際的解法 8 ÷ (3 − 8 ÷ 3) = 24 需要在內部配對中使用分數 8/3,再進行外部除法。逐步如下:
- 8 ÷ 3 = 8/3
- 3 − 8/3 = 9/3 − 8/3 = 1/3
- 8 ÷ (1/3) = 8 × 3/1 = 24
一個只比較倍精度的求解器會把 3 − 8/3 計算為 3 − 2.6666666666666665,然後用 8 去除它,並回報像 23.9999… 這樣的值,而不是剛好剛好 24。其他像 1、5、5、5 這樣的牌組也依賴分數中間值才能到達 24。在每一步,求解器會從剩餘的項中選取每一個無序配對,用 + 和 × 結合該配對、兩種減法順序,以及每一種合法的除法順序,然後把新得到的項折回池中。重複這個步驟會走過不同的配對和括號結構,直到只剩下一個項為止;這就是 配對與組合方法 的運作方式。求解器透過把每個中間項表示為一對已化簡的整數(分子為整數、分母為正整數),並已用最大公因數約分,來避免浮點數這類錯誤。最終檢查是整數等式 分子 = 24 × 除數,因此僅僅接近 24 的值絕不會被當作精確結果回報,走過長循環分數的路徑也不會因四捨五入而遺失。在輸入上限為 99 的四個輸入下,中間整數的乘積遠在 JavaScript 安全整數範圍之內,所以分數表示在搜尋樹被展開的過程中永遠不會溢位。
輸入規則與求解器不接受的事項
這個求解器受到刻意的限制。已驗證的限制如下:
| 接受 | 不接受 |
|---|---|
| 介於 1 到 99 之間的四個整數 | 像 1.5 或 0.75 這樣的小數輸入 |
| +, −, ×, ÷ 和括號 | 串接,例如把 1 和 2 接成 12 |
| 每個數字恰好使用一次 | 重複使用任何輸入值 |
| 精確的分數中間結果 | 指數、階層、平方根 |
| 每手回傳 1 到 50 個算式 | 基本四則運算以外的運算 |
50 個算式的上限對於有許多共享相同算術結構之有效重排的牌組來說很重要。這份清單是一組合法有效數的構造,而非完整盤盤針對每個數學等價類別聲稱包含一個完整集合的完整集合,按長度然後按地區順序排序,因此較短、更直接的構造往往會先出現。如果原始謎題允許指數、階層、串接、小數點插入或重複使用單一數字,則該變體的徹底搜尋不會在此執行,求解器可能會在更寬鬆的規則集能找到答案的情況下回報無解。
讀懂回傳的算式
結果清單中的每一行都顯示完整的算式,後接「= 24」。你可以把該算式複製到普通計算機或專用的 分數計算機 中,自己驗證等式是否成立;不需要盲目信任這個求解器。算式中的括號係關重要:它們揭示了運算順序,不應隨意移除。像 8 ÷ (3 − 8 ÷ 3) 這樣的構造與寫成 8 ÷ 3 − 8 ÷ 3 的構造會算出不同的數,因為括號控制了哪些除法餵給哪些減法。
一個實用的閱讀習慣是從最內層的括號往外計算。找到最深的一對括號,把它化簡為單一值,然後一次往外推進一層。等到最外層的括號塌縮時,結果必須等於 24,而行末的等式確認求解器本身的化簡與你的讀法一致。
如果求解器回報無解,請再次確認四個數字是按照它們在卡片上或謎題來源上出現的順序輸入的。順序不會影響搜尋——會嘗試每一種排列——但打錯字、前導零或數位數字對調會導致搜尋跑在不同的牌組上,並可能合理地回傳無解。
當求解器回傳無解時
「無解」結果表示在已揭露的規則和輸入邊界下,使用僅有的加、減、乘、除、括號,並且每個輸入只使用一次的徹底搜尋,找不到剛好剛好 24。這不是軟體故障。1、5、11、13 這一手是一個有文檔記錄的基準案例:在基本四則運算規則下,這一手沒有答案,求解器可靠地確認了這一點。其他幾種模式也會回傳無解,包括那些數字之間沒有足夠公因數可透過基本運算到達 24 的牌組。
在接受「無解」為最終結論之前,請確認以下事項:
- 四個數字全部介於 1 到 99 之間。
- 沒有任何數位被對調,也沒有加入前導零。
- 原始謎題使用的規則集與本求解器相同——僅限基本運算,每個數字使用一次。
- 謎題不允許串接、指數、階層或小數點插入,因為這些變體可能產生本求解器不會顯示的答案。
對於課堂或謎題練習,請先在紙上試試那手牌,然後選擇 Solve 並把你的答案與頁面回傳的內容進行比較。如果某個構造與其中一行相符,則結果是精確的;如果頁面顯示你遺漏的構造,那些就成為下一手牌的學習筆記。所有處理都在瀏覽器中進行,四個數字和產生的算式不會被上傳或儲存,也不需要登入。