Mastermind攻略範例七(綜合運用多種猜謎技巧)

遊戲設定:No. of colours: 7; Start from: Trial 1; Length of code: Unspecified (3 - 5); Hints contain error(s)?: No error; Order type: Random order; Colour repeated?: Each colour at most 4 times

謎底:11410


在範例一至範例六每個範例中,筆者集中介紹一種破解Mastermind謎底的技巧。在這個範例中,讓我們看看如 何綜合運用多種猜謎技巧,破解一個不很簡單的謎底-謎底中的數字按任意次序排列,可能含有最多兩個空白 ,每個數字最多可重覆四次。好了,現在就讓我們開始吧。

在開始時第一和第二階段都沒有甚麼限制,可任意輸入5個數字。假設我們輸入00012,並得提示1,1。第一回合 結束後,我們得到以下的「推理追蹤表」(請注意以下的「推理追蹤表」是範例一和範例六的「推理追蹤表」的 結合):

回合輸入提示在本回合用到的新數字假設猜對的數字 假設正確的位置
1000121,100012--

接著我們進入第二回合的第一階段,即確定謎底應包含哪些數字。我們首先回顧第一回合的猜謎結果,由於在 第一回合我們猜對了2個數字,我們假設這2個數字為00。此外我們還須加上3個新數字,假設為334。因此經過 第一階段推理後,我們得到00334作為第二階段的輸入。

接著我們進入第二階段,即確定00334這五個數字的位置。由於在第一回合我們猜對了1個位置,我們假設這個 位置是A,即我們假設謎底的第一個數字是0。我們還有4個位置尚待決定。我們先考慮位置B和C。這兩個位置上 的數字都不可能是0(因為我們假設在第一回合中位置B和C不是正確的位置),但可以是3或4,我們就假設該兩個 數字是33。接著我們考慮位置D。這個位置上的數字沒有甚麼限制,我們就假設是0。最後我們確定位置E上的數 字是4。至此我們完成第二階段的推理,並輸入03304,結果得提示0,2。在第二回合結束後,我們的「推理追蹤 表」變成:

回合輸入提示在本回合用到的新數字假設猜對的數字 假設正確的位置
1000121,10001200A
2033040,2334--

接著我們進入第三回合的第一階段。我們首先回顧第二回合的猜謎結果。由於在第二回合我們本來假設猜對2個 數字(00),而該回合的提示也顯示我們猜對了2個數字,沒有進步。所以我們繼續假設00是對的。此外我們還須 加上3個新數字,假設為556。因此經過第一階段推理後,我們得到00556作為第二階段的輸入。

接著我們進入第二階段,即確定00556這五個數字的位置。本來我們假設在第一回合位置A是正確位置,可是在 第二回合我們的猜謎結果卻是我們沒有猜對任何位置,這顯示我們在第一回合的假設是錯的,所以我們返回第 一回合,把「假設正確的位置」從A改為B。我們還有4個位置尚待決定。根據我們現時的假設以及第一、第二回 合的猜謎結果,位置A、C、D上的數字都不可能為0,但可以是5或6。我們就假設該3個位置上分別為5、5和6。 最後我們便確定位置E上的數字是0。至此我們完成第二階段的推理,並輸入50560,結果得提示1,0。在第三回 合結束後,我們的「推理追蹤表」變成:

回合輸入提示在本回合用到的新數字假設猜對的數字 假設正確的位置
1000121,10001200B
2033040,2334--
3505601,0556--

接著我們進入第四回合的第一階段,我們首先回顧第三回合的猜謎結果。由於在第三回合我們本來假設猜對2個 數字(00),但該回合的提示顯示我們只猜對了1個數字,這說明我們的假設有錯。我們必須返回第一回合,把「 假設猜對的數字」從00改為01。接著我們重新前進至第二回合。比較一下01與03304,我們可得出結論:假如謎 底真的包含01,那麼在第二回合我們應至少猜中1個數字,但第二回合的提示顯示我們猜中2個數字,較我們預 期的多了一個數字,假設這個數字是3。接著我們再前進至第三回合,比較一下013與50560,我們可得出結論: 假如謎底真的包含013,那麼在第三回合我們應至少猜中1個數字,而第三回合的提示剛好顯示我們猜中1個數字 ,這顯示我們的假設013並不抵觸第三回合的猜謎結果。

我們的假設只包含3個數字,尚需2個數字。雖然現在我們已沒有新數字可用,但我們可以重覆用過的數字。接 著我們分析哪一些數字可以在謎底中出現或重覆。根據我們現時的假設以及第一至第三回合的猜謎結果,我們 發現2、4、5、6不可以在謎底中出現,而0和3則不可以重覆,只剩下1可以重覆(請讀者自行證明這一點)。因此 經過第一階段推理後,我們得到01113作為第二階段的輸入。

接著我們進入第二階段,即確定01113這五個數字的位置。由於我們已更改第一回合中假設猜對的數字,原則上 我們需要重新假設正確位置,但根據前面的推理,我們知道在第一回合中位置A不可能是正確的位置,所以我們 一開始便假設位置B是該回合中的正確位置。此一假設並不抵觸第二和第三回合的猜謎結果。接下來我們確定其 餘4個位置上的數字,根據我們現時的假設以及第一回合的猜謎結果,1不能出現在位置B和D上,但卻可以出現 在其他位置上,所以我們便把3個1填入位置A、C和E。最後我們亦確定位置D上的數字是3。至此我們完成第二階 段的推理,並輸入10131,結果得提示1,3。在第四回合結束後,我們的「推理追蹤表」變成:

回合輸入提示在本回合用到的新數字假設猜對的數字 假設正確的位置
1000121,10001201B
2033040,23343-
3505601,0556--
4101311,311--

接著我們進入第五回合的第一階段,我們首先回顧第四回合的猜謎結果。由於在第四回合我們本來假設猜對3個 數字(013),但該回合的提示顯示我們猜對了4個數字,較我們預期的多了一個數字,我們假設這個數字是1 (這 個1不是第一回合中原來的那個1,而是第四回合兩個新加的1的其中之一)。現在我們共假設猜對4個數字,尚需 1個數字。我們分析哪一些數字可以在謎底中出現或重覆。根據我們現時的假設以及第一至第四回合的猜謎結果 ,我們發現2、4、5、6不可以在謎底中出現,而0、1和3則不可以重覆(請讀者自行證明這一點),這即是說我們 沒有數字可用。但在本局的遊戲設定下,我們可以使用最多兩個空白,所以現在我們使用一個空白來填補餘下 的位置。因此經過第一階段推理後,我們得到0113b作為第二階段的輸入(註1)。

接著我們進入第二階段,即確定0113b的位置(請注意由於b不算是數字,在以下推理過程中我們無需特別考慮b 的位置。我們只需確定0、1、1、3這4個數字的位置,餘下的位置自然就是b的位置)。由於我們沒有更改第一回 合中假設猜對的數字,我們首先繼續假設在第一回合中位置B是正確位置,然後嘗試確定其他數字的位置。可是 當我們回顧第四回合的猜謎結果時,我們便會發現,假如位置B是正確位置,那麼在第四回合中的那三個1都是 在不正確的位置上,即位置A、C和E上都不是1。可是這麼一來,我們便沒有位置安置本回合的那兩個1了。這說 明我們在第一回合假設的位置B不是正確的位置,所以我們返回第一回合,把B修改成C。可是這個假設不能通過 第三回合的檢驗,因為第三回合的提示顯示我們猜對了1個位置,但在該回合中位置C上的數字5不是我們假設猜 對的數字之一,所以那個正確位置必定是C以外的位置。但在該回合出現的數字只有0、5和6,其中5和6不是假 設猜對的數字之一,而我們已假設0是在位置C,不可能再有第二個0出現在其他位置。此一矛盾說明位置C仍不 是正確的位置,所以我們又返回第一回合,把C修改成D。

上述假設順利通過第二回合的檢驗,接著我們來到第三回合。由於第三回合的提示顯示我們猜對了1個位置,但 在該回合中位置D上的數字6不是我們假設猜對的數字之一,所以那個正確位置必定是D以外的位置,只可能是B 或E,我們首先假設B是正確的,即現在我們假設謎底是x0x1x,其中x是在該位置上尚未確定的數字。我們嘗試 把餘下的1和3填入這些x中。可是當我們看看第四回合的猜謎結果時,我們便發現無法為餘下的1找到合適的位 置(請讀者自行證明這一點)。這說明我們剛才的假設(位置B)有錯,所以我們回到第三回合,把B修改成E。接著 我們又再次考慮第四回合的情況。由於第四回合的提示顯示我們猜對了1個位置,但在該回合中位置D和E上的數 字都不是我們在第一和第三回合假設正確位置上的數字,所以那個正確位置必定是D和E以外的位置,只可能是A 或C,我們首先假設A是正確的,即現在我們假設謎底是1xx10。我們還要確定3的位置。可是無論我們把3放在位 置B還是C,都將抵觸第二回合的猜謎結果。這說明我們剛才的假設(位置A)有錯,所以我們把第四回合假設正確 的位置從A修改成C,即現在我們假設謎底是xx110。這樣我們便可把3放在位置A,餘下的位置B自然就是空白。 至此我們完成第二階段的推理,並輸入3b110,結果得提示2,1。在第五回合結束後,我們的「推理追蹤表」變 成:

回合輸入提示在本回合用到的新數字假設猜對的數字 假設正確的位置
1000121,10001201D
2033040,23343-
3505601,0556-E
4101311,3111C
53b1102,1---

接著我們進入第六回合的第一階段,我們首先回顧第五回合的猜謎結果。由於在第五回合我們本來假設猜對4個 數字(0113),但該回合的提示顯示我們只猜對了3個數字,較我們預期的少了一個數字,這說明我們的假設有錯 ,所以我們必須返回去修改之前的假設。我們首先回到第四回合。由於在第四回合用到的新數字全是1,無可更 改,我們再回到第二回合,把該回合的假設從3改為4。接著我們看看新假設是否能通過第三至第五回合的檢驗 。檢驗結果顯示,我們在第四回合必須假設猜對了11(請讀者自行證明這一點)。至此我們的假設已包含5個數字 (01114),我們已完成第一階段的推理,得到01114作為第二階段的輸入。

接著我們進入第二階段,即確定01114這五個數字的位置。由於我們更改了第二回合假設猜對的數字,我們可以 保留第一回合假設正確的位置(D),但對第二至第五回合的正確位置則要重新考慮。第二回合根本沒有正確位置 ,我們無需考慮。在第三回合我們有兩個可能正確的位置:B或E。但前面的推理已告訴我們,如果我們假設位 置B是正確的,我們將無法為餘下的兩個1找到合適的位置,所以我們只能假設位置E是正確的。接著在第四回合 我們又有兩個可能正確的位置:A或C,這次我們可以假設位置A是正確的,即現在我們假設謎底是1xx10。此一 假設並不抵觸第五回合的猜謎結果。現在我們還要確定餘下的1和4的位置。根據第四回合的猜謎結果,1不可能 再出現在位置C,故只能出現在位置B,由此我們亦確定位置C上是4。至此我們完成第二階段的推理,並輸入 11410,結果破解了謎底。在第六回合結束後,我們的「推理追蹤表」變成:

回合輸入提示在本回合用到的新數字假設猜對的數字 假設正確的位置
1000121,10001201D
2033040,23344-
3505601,0556-E
4101311,31111A
53b1102,1---
611410WIN---

註1:有些讀者可能會質疑,本局謎底明明沒有空白,現在我們卻假設謎底含有一個空白,這是否代表筆者介紹 的猜謎技巧有不妥善之處?筆者的回應是,在實際猜謎過程中,猜謎者根本不知道謎底是甚麼,所以他不能遺 漏任何一個合符邏輯的可能謎底。事實上,讀者只要細心觀察,便會發現3b110此一組合與第一至第四回合的猜 謎結果在邏輯上是協調的,所以絕對是一個合符邏輯的可能謎底。
連結至Mastermind Link Page