打牌,叶俊峰

def the_longest_chain(my_poker, history_poker):
# 定义一个扑克转数字字典和一个数字转扑克字典(只关心可出顺子的扑克)
s1 = [‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘10’, ‘J’, ‘Q’, ‘K’, ‘A’]
s2 = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
poker = {}
poker_reverse = {}
for i in range(len(s1)):
poker[s1[i]] = s2[i]
poker_reverse[s2[i]] = s1[i]
# 计算未出的扑克,去重并排序
my_poker = [poker.get(x) for x in str(my_poker).split(’-’)]
history_poker = [poker.get(x) for x in str(history_poker).split(’-’)]
all_poker = [x for x in range(3, 15)] * 4
for i in my_poker + history_poker:
if all_poker.index(i):
all_poker.remove(i)
remain_poker = list(set(all_poker))
remain_poker.sort()
# 找出最长递增子串
tmp_result = []
result = []
for i in range(len(remain_poker) - 1):
tmp_result.append(remain_poker[i])
for j in range(i + 1, len(remain_poker)):
if remain_poker[j] - remain_poker[j - 1] == 1:
tmp_result.append(remain_poker[j])
else:
break
if len(tmp_result) > len(result):
result = tmp_result[:]
tmp_result.clear()
return ‘-’.join([poker_reverse[x] for x in result])

print(the_longest_chain(“3-3-3-3-4-4-5-5-6-7-8-9-10-J-Q-K-A”, “4-5-6-7-8-8-8”))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值