2016-10-18 90 views
2

我想知道是否有看到這裏圖案的簡單方法。我一直在思考這個問題幾個小時,並沒有能夠完全制定它。遊戲哪裏有石頭N個塔和2名玩家

遊戲是如何運作的,有兩個玩家,一個是石塊塔,當玩家輪到他時,他必須從塔中移除至少一塊石頭,並且移除最後一塊石頭的玩家獲勝。

這裏就是我拉出到目前爲止,作爲地圖塔的高度,誰勝:

// {1} ---> "First" (remove the single stone) 
// {2} ---> "First" (remove both stones) 
// {n}, n > 2 ---> "First" (remove all the stones) 
// {1, 1} ---> "Second" (because your only option is to remove 1 stone and then your opponent only has to remove 1 stone to win) 
// {1, 2} ---> "First" (because you can remove 1 stone from the 2nd tower and then your opponent is left with {1, 1} which makes him lose as I explained in the last one) 
// {1, 3} ---> "First" 
// {1, n}, n > 1 ---> "First" 
// {2, 2} ---> "Second" 
// {2, 3} ---> "First" 
// {2, 4} ---> "First" 
// {2, n}, n > 2 ---> "First" 
// {m, n} ---> m < n ---> "First" 
// {1, 1, 1} ---> "First" 
// {1, 1, 2} ---> "First" 
// {1, 1, 3} ---> "First" 
// {1, 1, n} ---> "First" 
// {1, 2, 2} ---> "First" 
// {1, 2, 3} ---> "Second" 
// {1, 2, 4} ---> "First" 
// {1, 2, 5} ---> "First" 
// {1, 2, n}, n > 3 ---> "First" 
// {2, 2, 2} ---> "First" 
// {2, 2, 3} ---> "First" 
// {2, 2, n}, n > 1 ---> "First" 

事實,我想出了:

  • 如果每個塔有1個石頭,如果有奇數塔和輸,則輪是勝者
  • 如果塔的數量是N並且任何塔的高度大於N+1,則結果與如果該塔的高度爲N+1

要麼比,我不圖案的出足夠寫線性解。

任何幫助?

回答

3

這場比賽被稱爲NIM。獲勝策略是在每個塔中石頭數量的XOR爲0的位置留下一個位置。這迫使對手進入具有非零XOR值的配置。第一玩家可以再依次再次達到與0

例如從{1,2,4}開始的獲勝舉動是去{1,2,3}的異或值的位置。注意1 XOR 2 XOR 3 = 0.假設對手從最後一堆{1,2,1}中取得2塊棋子,下一次獲勝移動將完全移除第二堆:{1,0,1}再次進行XOR值0;等等。

+0

只是好奇......真的有人會希望自己想出來嗎?或者這只是一個已知的技巧問題? –

+0

有人必須首先想到它。你可以在這裏閱讀更多關於理論的知識:https://en.wikipedia.org/wiki/Sprague%E2%80%93Grundy_theorem – Henry