假幣謎題,就是經典的十二枚硬幣天平問題:在十二枚外觀一模一樣、各自編號的硬幣中,有一枚的重量和其他硬幣不同,這個謎題要你只用三次天平秤重,找出到底是哪一枚編號的硬幣不一樣,以及它究竟是比較重還是比較輕。資訊量的計算,說明了為什麼「三」正好是這個神奇的數字:十二枚硬幣乘上兩種可能的方向,會產生二十四種假設;三次秤重、每次有三種可能的結果,會產生二十七種結果序列;而公開的秤重方案,會為每一種狀態,分配到一組獨一無二的序列。廣為人知的解法,是一套不會依結果調整、固定三列的方案,每一次都是拿四枚硬幣去對四枚硬幣秤重,因此不論最後哪一枚硬幣是假幣、它的重量偏向哪一邊,都可以用同樣的三次秤重解決。Coin Weighing Puzzle 工具 會機械式地重現這套方案,讓你實際點擊完成這幾次秤重,而不是直接看解答,這樣你就能親眼看到,候選清單在第三次結果出來後,從二十四種縮減到只剩一種。

fake coin puzzle
假幣謎題

假幣謎題到底是什麼

經典的假幣謎題,會給你十二枚外觀一模一樣、各自編號的硬幣。其中恰好有一枚,重量和其他硬幣不同,而你並不知道那是哪一枚編號的硬幣,也不知道它是比較重還是比較輕。你手邊有一台附有兩個等重秤盤的天平,而且只能使用恰好三次。在這三次秤重之後,你必須指出一枚硬幣,以及一個方向。如果你指出的硬幣和方向都正確,你就贏得這一輪。

這個謎題的歷史,比電腦運算還要悠久,好幾十年來,一直出現在教科書與趣味數學專欄中。各大學也發表過權威的說明文章:劍橋大學的 NRICH 專案,在 nrich.maths.org 上,收錄了經典的 Great Weights Puzzle 題目敘述,而 Plus Maths,則獨立說明了天平三種可能的結果,以及讓三次秤重就足夠的「二十四種狀態」推理過程。有趣的轉折在於,你的秤重方式,不需要依照天平之前顯示的結果而改變,因為一套公開、固定三列的方案,就能適用於每一種被允許的隱藏狀態,這是一個比一般決策樹搜尋更強的特性。

為什麼三次秤重就能涵蓋二十四種情況

在任何一次謎題中,每一枚編號硬幣都有兩種可能的角色:它可能是比較重的假幣,也可能是比較輕的假幣。以十二枚編號硬幣來說,這就會產生二十四種不同的假設。每一次等重秤重,都有三種可能的結果:左邊秤盤往下沉、兩邊平衡,或右邊秤盤往下沉。因此三次秤重,會產生三的三次方,也就是二十七種結果序列。

二十七大於二十四,因此理論上,三次秤重確實可以把每一種假設,都編碼成不同的序列。不過,光是有足夠的容量,並不算是證明。如果秤盤分組選得不好,可能會讓兩種不同的假設,得到同樣的三次結果序列,讓你到最後無法區分它們。Coin Weighing Puzzle 中公開的「四對四」方案,已經經過機械式的驗證:這十二枚硬幣中的每一枚,在三次秤重中,於左盤、右盤與未上盤這三個位置上,都有各自獨一無二的模式,而同一枚硬幣是重的假幣,會產生一組結果代碼,是輕的假幣,則會產生相反的代碼。在這二十四種假設中,全部二十四組代碼,彼此都是獨一無二的。

一個實際的驗證方式,是把一枚正常硬幣的重量設為十個單位、重的假幣設為十一個單位、輕的假幣設為九個單位,接著在每一種假設下,把兩邊秤盤的總重量加總起來。獨立的開發驗證程式,正是這樣去確認二十四組不同的三次結果向量。想更深入了解,為什麼二十四種狀態能容納在二十七種序列之中,可以參閱 the Plus Maths walkthrough

公開方案與自訂路徑的比較

玩這個假幣謎題時,你並不是非得遵循那套公開的三列方案不可。你可以把任何不同的硬幣,以任何方式分組,放到任一邊的秤盤上,只要兩邊秤盤上的硬幣數量相同且大於零即可。這兩種做法,各自有不同的取捨。

特性公開的「四對四」方案自訂的等量秤盤分組
使用的秤重次數恰好三次恰好三次
是否會依結果調整不會,每一輪都是同一套方案會,你可以每次秤重都改變做法
是否已驗證會只剩一個候選項是,適用於每一種狀態不一定
第三次秤重後剩下的候選項一個不一定,可能有好幾個
最後猜測時的風險沒有因模糊不清而產生的風險若還有多個候選項殘留,風險會較高

這套公開的方案,是不需要依結果調整的,這比一般的分支搜尋更強:不論天平先前顯示過什麼結果,都可以使用同樣的三次比較。一條設計得好的自訂路徑,同樣可以一樣有效,但一條資訊量不足的自訂路徑,可能會在三次秤重之後,仍然留下好幾個候選項。這個遊戲,仍然要求你做出一次最終猜測;它不會悄悄多加一次秤重,也不會揭露隱藏的預設答案。

如何在瀏覽器中解開假幣謎題

Coin Weighing Puzzle,把這套抽象的邏輯,變成一個可以點擊操作、真正進行秤盤比較的天平調查過程,而不是直接把謎題換成一份解答清單。要從頭到尾完成一輪:

  1. 打開 Coin Weighing Puzzle 工具,把數量相同、彼此不同的硬幣,分別放到左右兩邊的秤盤上;或是選擇 Load plan,套用下一個公開的「四對四」比較方案。
  2. 選擇 Weigh now,並記錄下左邊秤盤比較重、兩邊平衡,還是右邊秤盤比較重。重複這個動作,直到完成恰好三次有效秤重。
  3. 在第三次結果出來後,選出一枚編號硬幣,標記為 Heavier 或 Lighter,然後送出。解出全部五種情況,正好會得到 1,000 分。

在兩邊秤盤上的硬幣數量相同且大於零之前,Weigh now 這個控制項,會一直維持不可使用的狀態,因此這個遊戲,會用機制強制執行「等量秤盤」這條規則。一枚硬幣不可能同時放在兩邊秤盤上,因為它目前的位置,就是一個明確的狀態:未上盤、在左邊,或在右邊,三選一。在秤重階段中,候選項計數器,就是你即時的證據:它一開始是二十四,並在每一次有效秤重之後,篩選這個假設集合。依照公開的方案進行,不論假幣的實際狀態是哪一種,第三次結果出來後,都會只剩下一個候選項。

如何解讀結果紀錄與候選項計數器

每一次秤重之後,這個遊戲會在看得見的紀錄中,記下三件事:所選的秤盤分組、三種狀態中的結果,以及剩餘的候選項數量。接著秤盤會清空,準備進行下一次比較。這個候選項計數器,並不只是裝飾用的,因為它就是每一次有效秤重之後,實際的假設集合,會透過移除任何和觀察到的結果矛盾的假設來更新。

當某個假設所預測的結果,和天平實際顯示的結果不一致時,這個假設就會被移除。舉例來說,如果你把 1、2、3、4 號硬幣放在左邊,把 5、6、7、8 號硬幣放在右邊,結果天平平衡了,那麼假幣就不可能是 1 到 8 號中的任何一枚,不論哪個方向都一樣。只有未上盤的那四枚硬幣,也就是 9 到 12 號,才可能是比較重或比較輕的假幣。計數器會從二十四降到八,而下一次秤重,就會針對這個縮小後的範圍來設計。

不可能進行第四次秤重。用來挑選一枚硬幣、標記為重或輕,並送出的答案控制項,只會在三次有效結果出現之後,才會出現。

計分、重試,以及拿到 1,000 分的路徑

這五輪隱藏的關卡,會分別鍛鍊到策略的不同部分。預設的情境是:1 號硬幣偏重、6 號硬幣偏輕、12 號硬幣偏重、8 號硬幣偏輕,以及 10 號硬幣偏重。它們並不是隨機產生的,這代表整個路徑,是可以重現並被檢驗的。每正確辨識出一次硬幣編號與方向,會得到 200 分,因此解出全部五種情況,正好會得到 1,000 分。

一次錯誤的完整猜測,是可以挽回的。在同一輪中重複猜同一個錯誤的硬幣與方向,不會被算成兩次;只有第二次、不一樣的錯誤猜測,才會結束這一輪。完成或卡關的狀態,會凍結畫面,直到你按下 Restart 為止。共用的 GameShell,提供了分數、可選的本機儲存最佳分數、Restart 控制項、鍵盤操作說明,以及連按兩次 Escape 的老闆鍵功能。

不論是用鍵盤還是觸控操作,都使用同一套處理邏輯。在完成三次秤重之前,A 會把選取的硬幣送到左邊,D 送到右邊,X 移除它,P 載入目前的方案列,Enter 則對有效的秤盤進行秤重。三次秤重完成之後,Space 會選取目前反白顯示的嫌疑硬幣,H 標記為重,L 標記為輕,Enter 則送出答案。

這個工具明確標示出的常見限制

這個數學上的限制,是刻意設計的。這裡的假幣謎題,是一個理想化的趣味天平謎題,並不是實際的秤重應用程式。它不會模擬校準誤差、摩擦力、硬幣與硬幣之間的製造差異、實際的數值質量、不確定性、損壞的秤具,或真實貨幣。10、11 與 9 這幾個數值,只存在於獨立的開發驗證程式中,因為它們之間的相對大小關係,讓理想化的秤盤結果,很容易重新計算;實際執行時的遊戲玩法,只會使用宣告出來的「重或輕」假設,以及硬幣在等量秤盤上的所屬關係。

沒有任何回應會離開瀏覽器、不需要任何帳號、不會呼叫任何遊戲相關 API,也不會載入任何外部資源,因此這個謎題,完全自成一體地存在於單一一個頁面之中。

若想深入了解,請參閱 Solve the Color Gradient Puzzle by Following the Shortest Hue Arc

若想深入了解,請參閱 How to Solve a Counting Blocks Puzzle with Hidden Cubes