Pyhthon實現 Nim遊戲 的一種方法

2021-08-28 15:08:03 字數 830 閱讀 5163

你正在和你的朋友,一共兩人在玩nim遊戲:桌上有乙個石碓,每一次只能移除1-3個石頭。移除最後乙個石頭的為贏家。你是遊戲開始之後第乙個移動石頭的人。

你和你的朋友都是很聰明的人,每一次都會選擇最優的策略。寫乙個函式判斷在給定石頭個數的前提下你能否贏得比賽

example:

input:4output:falseexplanation:if there are 4 stones in the heap, then you will never win the game;

no matter 1, 2, or 3 stones you remove, the last stone will always be

removed by your friend.

最後一次對手有的石頭應該是4個,這樣不管他怎麼拿你都會贏,所以為了確保我能贏,我每次拿了之後剩下的石頭數是4的倍數

則一開始石頭數不是4的倍數(分析參考他人)

def canwinnim(self, n):

""":type n: int

:rtype: bool

"""# if n % 4 == 0:

# return false

# else:

# return true

return false if n % 4 == 0 else true #與注釋部分功能相同

演算法題來自:

nim遊戲簡介

定義p position和n position,其中p代表previous,n代表next。直觀的說,上一次move的人有必勝策略的局面是p position,也就是 後手可保證必勝 或者 先手必敗 現在輪到move的人有必勝策略的局面是n position,也就是 先手可保證必勝 更嚴謹的定義是 ...

博弈 Nim遊戲

nim遊戲是博弈論中最經典的模型,它又有著十分簡單的規則和無比優美的結論。nim遊戲是組合遊戲 combinatorial games 的一種,準確來說,屬於 impartial combinatorial games 以下簡稱icg 滿足以下條件的遊戲是icg 可能不太嚴謹 1 有兩名選手 2 兩...

Nim遊戲模板

鏈結 甲,乙兩個人玩nim取石子遊戲。nim遊戲的規則是這樣的 地上有n堆石子 每堆石子數量小於10000 每人每次可從任意一堆石子裡取出任意多枚石子扔掉,可以取完,不能不取。每次只能從一堆裡取。最後沒石子可取的人就輸了。假如甲是先手,且告訴你這n堆石子的數量,他想知道是否存在先手必勝的策略。模板題...