「讓算式成立」的遊戲會挑戰你把一個部分完成的算術運算式,透過在固定數字之間插入正確的運算子,使它計算結果恰好等於一個給定的目標值。《Math Operator Puzzle》是這種玩法中一個具確定性的版本:每一關會顯示一排固定的數字與若干空白的運算子槽位,你的任務是把加、減、乘、除放進每一個槽位,而且只有當標準運算優先順序所產生的結果正好等於顯示的目標值時,該運算式才算「成立」。共五關、五個固定目標值,若每一關都解出且零失誤,就能拿下滿分 1,000 分。

這種玩法之所以存在,是因為正確計算運算式仰賴的是初級代數 (prealgebra) 中所教的同一套優先順序規則:乘除共用同一層級、由左至右執行,接著才是加減共用同一層級、由左至右執行。《Math Operator Puzzle》會在每道謎題旁明確標示這些規則,把每一個中介值都當作化簡過的有理數來計算,並透過枚舉所有 4ⁿ 種運算子組合,機械化地驗證每一關的解答數。這裡沒有隱藏的慣例、沒有隨機變化,也沒有選擇題可猜。你擺放運算子、讀取精確的結果,只有當你在紙上寫出的算術結果與螢幕上的目標值相符時才送出。

make the equation true game
讓算式成立的遊戲

「讓算式成立」的遊戲實際上要你做什麼

多數判斷真假式的遊戲只問一個快速的判斷題:題目給的運算式是否已經成立,你點「是」或「否」就好。以擺放運算子為核心的「讓算式成立」遊戲則是截然不同的挑戰,因為真假與否是由你創造的。題目會給你一排固定且不能重新排列、移除或合併成多位數的數字,加上數個夾在數字之間的空白運算子槽位,並要求你把每個槽位都填上加、減、乘、除,讓得到的運算式等於顯示的目標值。這是貨真價實的運算子擺放遊戲,而不是辨識測試,唯一能讓運算式「成立」的方式,就是你所選的運算子在標準算術規則下與數字結合後,恰好產生目標值。

「在標準規則下相等」這個單一要求,正是這種玩法與一般湊湊算式測驗的差別所在。運算式只有一種被認可的解讀方式,目標值也只有一個正確數值,任何無法產生該數值的運算式都會被判定錯誤。你的技巧在於讀懂數字、預判哪些運算子能讓結果逼近目標,並利用題目即時顯示的算術結果檢查你的解法。送出未完成的運算式是不被允許的,而空白運算式也不會記為失誤,所以唯一會扣分的,就是一個完全填好卻仍然不等於目標值的運算式。

《Math Operator Puzzle》如何把「成立」變成精確的目標

在 《Math Operator Puzzle》中,所有要素一開始就顯示出來,而且在整關進行中絕對不會改變。固定的數字排保持原位、空白的運算子槽位保持在原處、目標值持續顯示在螢幕上,而決定運算式是否成立的優先順序規則也會印在每道謎題旁。介面也會在題目上方顯示目前的解答數與完整的搜尋空間,因此在你放下第一個運算子之前,你就能知道自己面對的是「十六種組合中要找出一個獲勝運算式」,還是「六十四種組合中要找出三個獲勝運算式」。

在介面背後,遊戲使用化簡過的有理數運算來計算目前的運算式,再重複使用同一個計算器來枚舉所有 4ⁿ 種組合,並驗證所公布的解答數。這代表你在題目上方看到的數字不是提示或估計,而是執行用來評分你送出的解答、同時跑過所有可能運算子排列的同一段程式碼的結果,而且其搜尋空間是有限的,能夠支援機械化驗證,而非統計上的近似。這五道原始謎題每題有兩個到三個運算子槽位,讓總搜尋量維持在能逐一檢查所有組合的小範圍內。

如何遊玩《Math Operator Puzzle》

當第一道謎題顯示出來時,解關的流程大致如下:

  1. 選取固定數字之間的空白運算子槽位,再選擇加、減、乘、除。使用滑鼠與觸控的玩家點擊任一槽位即可聚焦;使用鍵盤的玩家則用左、右方向鍵移動選擇,並在選定運算子按鈕後按 Enter。
  2. 填滿每一個槽位並讀取精確的目前數值。乘除會在加減之前執行,同層級時由左至右依序處理,所以顯示的數值就是標準算術會算出的結果。空白槽位會擋住送出動作,但不會記為失誤。
  3. 檢查運算式並準確解出全部五個固定目標值以拿到恰好 1,000 分。正確的運算式可得 200 分並開啟下一關;錯誤的運算式則會把該關與你精確的運算子序列組合成一把獨特的金鑰,讓重複的猜測不會再消耗第二次失誤。

使用鍵盤的玩家也可以用加號與減號鍵輸入對應運算子,用星號或 X 代表乘法、斜杠代表除號,並用 Enter 送出已完成的運算式。觸控與滑鼠玩家可以修改任何槽位而不受處罰,所以同一套流程同時支援滑鼠、手指與鍵盤輸入,而玩法本身不會改變。

為什麼優先順序決定哪些運算式「成立」

在任何「讓算式成立」的遊戲中,最重要的單一規則就是運算順序。乘除共用一個優先層級、加減共用另一個層級,而在同一層級中,運算式嚴格由左至右讀取。OpenStax 的 《Prealgebra》 代數語言章節說明:乘除會在加減之前執行,同優先層級的運算則由左至右進行。另一份 OpenStax 的程式設計參考資料,也就是 《Introduction to Python Programming》 中關於運算子優先順序的章節,則以範例 8 ÷ 4 × 3 = 6 再次確認了同一慣例,因為 8 ÷ 4 會先被計算,結果再乘以 3。

那個由左至右的規則是最常被誤用的部分。許多玩家會以為 8 ÷ 4 × 3 應該解讀為 8 ÷ (4 × 3) = 8 ÷ 12 = 2/3,但標準優先順序把 ÷ 與 × 視為同一個由左至右的序列。同一條規則也決定了中介分數如何結合。《Math Operator Puzzle》會在每道謎題旁重複標示優先順序規則,因此目標值絕對不會依賴某個隱藏的慣例;它會把每一個中介值都當作化簡過的有理數,而非浮點數近似值來計算。例如 5 ÷ 2 會保持為 5/2,而該分數在運算式後段與 3/2 結合後,會精準地產生 4,不會產生任何捨入誤差。每次運算之後分子與分母會被化簡,負的分母會被正規化,而除以零則會在不影響遊戲進行、不消耗失誤的情況下被拒絕。

五道謎題的解答數與計分

每一關在出貨前都已進行過全面驗證。一道有 n 個槽位的謎題,會透過與即時顯示相同的精確有理數計算器檢查全部 4ⁿ 種組合,而該關所公布的解答數,就是在那次枚舉中存活下來的數目。五道固定謎題公布了以下已驗證的數字:

謎題運算子槽位已驗證的獲勝運算式
121
22 或 32
32 或 32
42 或 33
52 或 33
總計10 至 1411

謎題 1 只會搜尋恰好 16 種組合 (4²),因此唯一的獲勝運算式藏在一個相當緊湊的空間中;謎題 2 到 5 則依其槽位數擴展到 16 或 64 種組合。總計 11 個已驗證的獲勝運算式代表即使每題只有少數合法答案,整個流程仍然具備足夠的多樣性,而且遊戲並不要求任何「特權」運算式。任何一條已驗證的路徑都值該關的滿分 200 分,五關全解就能拿到滿分 1,000。這裡沒有計時器、沒有速度獎勵、沒有連勝加成,也沒有部分給分,因此計分公式化簡後就是 200 乘以已解關數。

遊戲也會自動去除重複的失誤。只要你在再次檢查之前至少更動一個運算子,就能挽回一次錯誤的運算式,因此同一個精確序列絕不會被計算兩次。一旦第二個不同的完整運算式仍未命中目標,該輪遊戲就會結束,這代表單一發生在後段的失誤無法靠猜測來補救。無效的運算子、無效的槽位編號、未完成的送出動作、除以零,以及所有在完成或卡局後的操作,都會在維持應有狀態的同時不產生計分懲罰。

尋找正確算式的策略

由於數字永遠不會改變,優先順序規則也是固定的,最聰明的做法是在開始點選運算子之前,先在腦中演練整個搜尋空間。以下幾個習慣可以從紙筆算術順利轉換到這種格式:

  • 先看目標數,問問看這一列數字合理地能產生哪些運算結果。如果目標數遠大於這些數字的總和,幾乎一定要用到乘法。如果目標數接近其中某一個數字,則比較可能是減法或除法。
  • 逐欄位建立算式,利用即時顯示當作即時運算工具。每一次修改都會依照標準優先順序更新出精確數值,因此你可以測試部分排列,不必一次猜出整個算式。
  • 只要欄位中有 ÷,就要留意分數顯示。像 5/2 這種約分後的分數會保持精確,而且之後還能與其他分數結合,所以當題目明顯需要帶分數時,別假設顯示結果會自動四捨五入成整數。
  • 把錯誤的提交視為資訊,而不是失敗。關卡加上你輸入的確切運算子序列會組合成一個獨一無二的識別碼,所以重複犯同一個錯誤並不會付出代價,但出現第二個不同的錯誤就會結束這一回合。
  • 保留鍵盤操作方式以便精準輸入。左與右鍵選擇欄位,加號與減號選擇對應的運算子,星號或 X 選擇 ×,斜線選擇 ÷,Enter 鍵則確認完成的算式。使用滑鼠和觸控的使用者可以直接修改任何欄位而不受懲罰,所以切換輸入方式並不會改變題目的答案。

這些習慣適用於任何關卡。當第五題解出後,這一局就結束,分數顯示為 1,000,此時可以使用 Restart 從相同的固定狀態重新開始。Restart 會還原第一列的數字、清空所有欄位、分數歸零,且不會記錄任何錯誤,所以每次重新開始都會從相同的固定狀態出發。一切都在瀏覽器本機執行,不需要帳號、下載、上傳、API、遠端解題器或個人資料,因此唯一留下的紀錄,可能就只有這個瀏覽器中保存的共享最佳分數。

想進一步了解,請參閱 Perfect Timing Game: Hit Five Visible Windows to 1,000。

想進一步了解,請參閱 Learn Fractions Game: Shade Five Equal-Part Targets。