前言:
在找工作貼中看到一個蠻有意思的智力題,網上沒找到答案,自己想了一下,作個記錄,思路挺簡單,講起來有些囉嗦,看的時候自己在紙上畫一下就很容易理解了。
問題:
四枚硬幣,擺成一個正方形,不知道硬幣的正反面,然後我可以指定翻若干個硬幣,對手可以隨機的轉動這個正方形。如果某一時刻,所有硬幣朝向相同就算我贏了。問有沒有必勝策略。
思路:
我們用1表示硬幣正面,用0表示硬幣反面,四枚硬幣不管怎麼翻,怎麼旋轉,都可以歸結爲以下四大類情況:
第一大類:四個面均一樣
1 1
1 1
四個面都是0,或者都是1,像這種情況,就是勝利的情況,不需要任何操作。
第二大類:對角線上硬幣的面一樣
1 0
0 1
同一對角線的兩個硬幣面一樣,不同對角線上的硬幣面相反。不管如何旋轉,只需要翻轉對角線上兩枚硬幣即可獲勝。
所以本類型的必勝決策爲:隨便選正方形的一個對角,將兩枚硬幣翻面。
第三大類:相鄰的兩枚硬幣面一樣,另外兩枚硬幣與前兩個面相反
1 1
0 0
對這類情況,翻轉一邊上的兩枚硬幣,可能出現兩種情況:如果比較理想,翻轉的兩枚硬幣面一樣(例如翻轉的是下面的 0 0,),則勝出;第二種情況,翻轉的兩枚硬幣面相反(例如翻轉的是右側的 1 0),則轉換成了上面描述的第二大類(對角線一樣),下一步隨便選擇對角兩枚硬幣進行翻轉即可獲勝。
所以本類型的必勝決策爲:
隨便選正方形的一邊,將兩枚硬幣翻面,如果沒獲勝,再隨便選正方形的一個對角,將兩枚硬幣翻面。
第四大類:相鄰的三枚硬幣面一樣,另外一枚硬幣面相反
1 1
1 0
由於硬幣的正反面我們不可見,所以無法直接選擇那個特殊的硬幣進行翻轉。採用對角線翻轉和相鄰兩個翻轉的策略均無法進行局面轉換,翻轉後仍然是相鄰三枚硬幣一樣的局面。所以考慮隨便選一枚硬幣進行翻轉,進行一個局勢轉變。隨便選取一枚翻轉有一下三種情況:第一種比較理想的話可以直接獲勝(例如下表中選擇翻轉右下角的 0);第二種情況是轉變成第二大類(對角線上硬幣的面一樣),例如選擇翻轉左上角的1;第三種情況是轉變爲第三大類(相鄰的兩枚硬幣面一樣),例如選擇翻轉右上角的1或者左下角的1。轉變爲第二大類和第三大類均有必勝路線。
那麼如何判斷是轉變爲第二大類還是第三大類呢?因爲第二大類必勝決策只有一步,所以先驗證是否爲第二大類,如果沒有獲勝則說明是第三大類,而且如果是第三大類的話,之前驗證是否爲第二大類採用的必勝決策(隨便選正方形的一個對角,將兩枚硬幣翻面)也不會破壞類型,仍然爲第三大類。
所以本類型的必勝決策爲:
隨機選一枚硬幣進行翻面;如果沒獲勝,再隨便選正方形的一個對角,將兩枚硬幣翻面;如果沒獲勝,再隨便選正方形的一邊,將兩枚硬幣翻面;如果沒獲勝,再隨便選正方形的一個對角,將兩枚硬幣翻面。
答案(必勝策略):
(1)隨便選正方形的一個對角,將兩枚硬幣翻面 //解決第二大類,如果是第三第四大類,類型均不變
(2)隨便選正方形的一邊,將兩枚硬幣反面 //嘗試解決第三大類,如果是第四大類,類型不變
(3)隨便選正方形的一個對角,將兩枚硬幣翻面 //徹底解決第三大類,如果是第四大類,類型不變
(4)隨便選一個硬幣,翻面 //嘗試解決第四大類
(5)隨便選正方形的一個對角,將兩枚硬幣翻面 //嘗試解決第二大類 (如果上一步沒贏,則變爲第二大類或第三大類)
(6)隨便選正方形的一邊,將兩枚硬幣反面 //嘗試解決第三大類(如果上一步沒贏,則說明爲第三大類)
(7)隨便選正方形的一個對角,將兩枚硬幣翻面。 //徹底解決第三大類
完畢!