Python算法之常胜将军

Python算法之常胜将军

常胜将军是一个非常有意思的智力游戏趣题。常胜将军的大意:A和B两个人玩抽取火柴的游戏,共有21根火柴。每个人每次最多取四根火柴,最少取一根火柴。如果某个人取到最后一根火柴则判定为失败方。A让B先抽取,结果每次都是A胜利。

代码:

import random

def game(match):
    idx=0
    while match>1:
        idx+=1
        if idx%2==1:
            gamer='A'
            choice=random.choice(range(1,5)) if match>=5 else random.choice(range(1,match+1))
        else:
            gamer='B'
            if match>5:
                for x in range(1,5):
                    if (match-x)%5==1:
                        choice=x
                        break
            else:
                choice=match-1
        match-=choice
        print(gamer,choice,match)
    another='A' if gamer=='B'else 'B'
    loser=gamer if match==0else another
    print('%s 胜利!'%loser)

if __name__ == '__main__':
    game(21)

运行结果:

A 2 19
B 3 16
A 2 14
B 3 11
A 3 8
B 2 6
A 4 2
B 1 1
A 胜利!
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章