Mastermind攻略範例四(中局遊戲)

讀者在瀏覽本範例前請先瀏覽「Mastermind攻略範例一」
以便對破解Mastermind謎底的基本原理有一概括認識。

遊戲設定:No. of colours: 7; Start from: Middle; Length of code: 4; Hints contain error(s)?: No error; Order type: Fixed order; Colour repeated?: No repetition

謎底:0236


在這種遊戲設定下,電腦會首先隨機產生若干個回合的猜謎結果,然後由你根據已有的結果及提示繼續猜下去 。由於電腦隨機產生的猜謎結果不一定符合既定的數字順序,在處理「本回合用到的新數字」時我們要十分小 心。不過除此以外,本範例的推理原理跟其他範例沒有甚麼不同。現在就讓我們看看以下範例。

假設在開始時電腦為我們隨機產生了下表所示首四個回合的猜謎結果。為識別電腦隨機產生的猜謎結果以及我 們之後的猜謎結果,下表在電腦隨機產生的猜謎結果前加了#號。此外,下表亦顯示在每一回合中用到的新數字 。

回合輸入提示在本回合用到的新數字假設猜對的數字
1#134621346-
2#1256225-
3#013630-
4#12342--

接下來我們利用已有的資料進行推理,以確定在第五回合我們應輸入甚麼數字。先從第一回合開始考慮,由於 在第一回合猜對了2個數字,我們首先假設這兩個數字為13。接著我們前進至第二回合。比較一下13與1256,我 們可得出結論:假如謎底真的包含13,那麼在第二回合應至少猜中了1個數字,而第二回合的提示是2,較我們 預期的多了1個數字,我們假設這個數字是2。接著我們前進至第三回合,這時我們假設謎底包含123。比較一下 123與0136,我們可得出結論:假如謎底真的包含123,那麼在第三回合應至少猜中2個數字,而第三回合的提示 是3,較我們預期的多了1個數字,我們假設這個數字是0。至此我們的推理頗為順利,我們的「推理追蹤表」變 成:

回合輸入提示在本回合用到的新數字假設猜對的數字
1#13462134613
2#12562252
3#0136300
4#12342--

接著我們前進至第四回合,這時我們假設謎底為0123。比較一下0123與1234,我們可得出結論:假如謎底真的 是0123,那麼在第四回合應猜中3個數字,可是第四回合的提示是2,較我們預期的少。這說明我們的假設有錯 ,所以我們必須返回去修改之前的假設。我們首先回到第二回合,把假設修改為5,然後重新前進至第三回合。 比較一下135與0136,我們可得出結論:假如謎底真的包含135,那麼在第三回合應至少猜中2個數字,而第三回 合的提示是3,較我們預期的多了一個數字,這個數字必定是0。接著我們再前進至第四回合。比較一下0135與 1234,我們可得出結論:假如謎底真的是1234,那麼在第四回合應猜中2個數字,而第四回合的提示剛好是2, 並不抵觸我們的假設。由於我們現時假設猜對了0135,剛好是4個數字,我們就在第五回合輸入0135,結果得提 示為2。至此我們的「推理追蹤表」變成:

回合輸入提示在本回合用到的新數字假設猜對的數字
1#13462134613
2#12562255
3#0136300
4#12342--
501352--

接著我們進入第六回合。我們首先回顧第五回合的猜謎結果,由於在第五回合我們本來假設猜對了0135,但所 得提示卻是2,這說明我們的假設有錯,所以我們必須返回去修改之前的假設。我們回到第一回合,把假設修改 成14。然後重新前進至第二回合。比較一下14與1256,我們可得出結論:假如謎底真的包含14,那麼在第二回 合應至少猜中1個數字,而第二回合的提示是2,較我們預期的多了一個數字,我們假設這個數字是2。接著我們 前進至第三回合,這時我們假設謎底包含124。比較一下124與0136,我們可得出結論:假如謎底真的包含124, 那麼在第三回合應至少猜中1個數字,而第三回合的提示是3,較我們預期的多了兩個數字。可是在第三回合只 有一個新數字(0)可供使用。這說明我們的假設有錯,所以我們又必須返回去修改之前的假設。但是即使我們把 第二回合的假設修改成5,仍然無濟於事(請讀者自行證明這一點),因此我們必須再次回到第一回合修改該回合 的假設。

容易證明,無論我們把第一回合的假設修改成16還是34,都與下兩個回合的猜謎結果互相矛盾(請讀者自行證明 這一點),因此我們把第一回合的假設修改成36,然後前進至第二回合。比較一下36與1256,我們可得出結論: 假如謎底真的包含36,那麼在第二回合應至少猜中1個數字,而第二回合的提示是2,較我們預期的多了一個數 字,我們假設這個數字是2。接著我們前進至第三回合,這時我們假設謎底包含236。比較一下236與0136,我們 可得出結論:假如謎底真的包含236,那麼在第三回合應至少猜中2個數字,而第三回合的提示是3,較我們預期 的多了一個數字。這個數字必為是0。接下來我們把0236跟第四回合的1234和第五回合的0135作一比較,便會發 現這兩個回合的猜謎結果都不抵觸我們的假設。由於我們現時假設猜對了0236,剛好是4個數字,我們就輸入 0236,結果我們猜中了謎底。在第六回合結束時,我們的「推理追蹤表」變成:

回合輸入提示在本回合用到的新數字假設猜對的數字
1#13462134636
2#12562252
3#0136300
4#12342--
501352--
60236WIN--

從上述範例可見,雖然在玩中局遊戲時,我們看似「身不由己」(開首幾個回合的猜謎結果是電腦隨機產生的) ,但事實上隨機產生的猜謎結果常常給予我們充足的資料,幫助我們猜謎,我們往往只需多猜一兩個回合便可 破解謎底。此一範例也顯示,猜謎時所用的數字其實不一定要依循固定的數字順序。即使是任意的順序,只要 我們依循系統化的邏輯推理,我們也必能破解謎底。


連結至Mastermind Link Page