兩個玩家輪流從一堆物品中拿走一部分,在每一步中,玩家可以自由選擇拿走多少物品,但是必須至少拿走乙個並且最多只能拿走一半物品,然後輪到下乙個玩家。拿走最後乙個物品的玩家輸掉遊戲。
在聰明模式中,計算機每次拿走足夠多的物品使得堆的大小是2 的冪次方減1——也就是3,7,15,31 或63。
除了堆的大小已經是2 的冪次方減1,在其他情況下這樣走都是符合遊戲規則的。在那種情況下,計算機就按遊戲規則隨機拿走一些。
import實現效果random
num = random.randint(3, 100) #
函式返回3和100之間的任意整數
print("
初始數為{}
".format(num))
while num > 1:
#人類回合
while
true:
usernum = int(input("
請輸入你取走的個數:"))
if 1 <= usernum <= num//2: #
至少取走乙個且最多只能拿走一半 求商://
break
else
:
print("
輸入的數字不合法!")
num -=usernum
print("
目前有{}
".format(num))
if num == 1: #
如果玩家取走後剩1,則玩家勝
print("
you win.")
break
#機器回合
mi = [3, 7, 15, 31, 63]
while
true:
if num == 2:
rootnum = 1
print("
root取走{}
".format(rootnum))
break
t = random.choice(mi) #
機器隨機抽取預計餘數
rootnum = num -t
if num in mi: #
餘數本來就是2的冪次方-1
rootnum = random.randint(1, num//2) #
機器隨機抽取
print("
root取走{}
".format(rootnum))
break
elif 0 <= rootnum <= num//2 and num not
inmi:
print("
root取走{}
".format(rootnum))
break
else
:
continue
num -=rootnum
print("
目前有{}
".format(num))
if num == 1: #
如果機器取走後剩1,則機器勝
print("
you loss.
")
搜尋複製
python實現尼姆遊戲
尼姆遊戲,這是乙個著名的遊戲,有很多變種玩法。兩個玩家輪流從一堆物品中拿走一部分。在每一步中,玩家可以自由選擇拿走多少物品,但是必須拿走一部並且最多只能拿走一半物品,然後輪到下乙個玩家。拿走最後乙個物品的玩家輸掉遊戲。先手隨機。sur bin nve python coding utf 8 impo...
Python 尼姆遊戲 人機對戰
實驗目的 實驗內容 n 目的數運算元x n目的數 運算元x11 失敗17152 21118 1533 ran19154 43120 15553 221156 63322 1577 ran23158 87124 15997 2251510107 3261511117 4271512127 528151...
取石子遊戲之尼姆博弈
尼姆博弈 有三堆各若干個物品,兩個人輪流從某一堆取任意多的物品,規定每次至少取乙個,多者不限,最後取光者得勝 這種情況與二進位制有著很大的關係,我們用 a,b,c 來表示某種局勢,那麼 0,0,0 必然為奇異局勢,最後乙個面對這個局勢的必敗。0,n,n 也是種奇異局勢。因為如果對手在其中一堆取m個石...