python3
尼姆游戏是个著名的游戏,有很多变种玩法。两个玩家轮流从一堆物品中拿走一部分。在第一步中,玩家可以自由选择拿走多少物品,但是必须至少拿走一个并且最多只能拿走一半物品,然后轮到下一个玩家。拿走最后一个物品的玩家输掉游戏。
在聪明模式中,计算机每次拿走足够多的物品使得堆的大小是2的幂次方减1–也就是3,7,15,31或63。除了堆的大小已经是2的幂次方减1,在其它情况下这样走都是符合游戏规则的。在那种情况下,计算机就按游戏规则随机拿走一些。
编写程序,模拟聪明版本的尼姆游戏。
from random import randint
def num(n):
while n > 1:
print('你先,我们有{0}'.format(n))
while True:
try:
nu = int(input('请输入你想要的数字:'))
assert 1 <= nu <= n//2
break
except:
print('你先,我们必须从1到{0}'.format(n))
n -=nu
if n==1:
return 'I Fail'
n -= randint(1,n//2)
else:
return 'You fail'
print(num(randint(1,100)))