疫情困在家里实在无聊,想起小时候和妈妈玩小猫钓鱼的游戏,女儿四岁,就和女儿尝试玩下。
规则很简单,一副牌54张,两个人平均分(大部分情况女儿分得多),牌面向下,每人轮流拿自己牌的最上面那张放到台面上,台面的牌堆按放的顺序摆放。如果台面上有相同数字的牌, 就把当前放的牌到相同数字的牌收入自己的牌堆下面(意思小猫钓到鱼了)。
玩了一下午还不错,小家伙蛮开心的,和我小时候一样,总是喜欢钓到大小王🃏。
import random
from collections import deque
def play():
# black joker + red joker + rest
cards = list('BR' + 'A23456789TJQK' * 4)
random.shuffle(cards)
players = (deque(cards[:27]), deque(cards[27:]))
print(players)
pool = []
turn = 0
while len(players[0]) > 0 and len(players[1]) > 0:
player = turn % 2
card = players[player].pop()
if card in pool:
idx = pool.index(card)
players[player].extendleft(pool[idx:] + [card])
pool = pool[:idx]
else:
pool.append(card)
turn += 1
print(f'{turn} -> {players}')
运行了几次,发现都能收敛,游戏都能结束。严格的数学推导回头思考下,还有结束时候平均经过多少轮。