python 写棋牌十三道(带鬼牌, 鬼牌可以变)中四套三条的代码
时间: 2023-11-22 14:52:26 浏览: 265
麻将带鬼牌的胡牌提示的完整逻辑,erlang语言代码实现
以下是一个简单的 Python 代码示例,用于计算带鬼牌的十三水中四套三条的牌型:
```python
# 牌面大小顺序
rank_order = ['3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A', '2', 'G']
# 计算牌型
def calculate(hand):
# 带鬼牌时,将鬼牌加入手牌中
if 'G' in hand:
hand.append('G')
# 对手牌进行排序
hand.sort(key=lambda x: rank_order.index(x))
# 遍历所有可能的组合,找到四个三条
for i in range(13):
for j in range(i+1, 13):
for k in range(j+1, 13):
for l in range(k+1, len(hand)):
# 如果有鬼牌,将其替换为当前最大的牌
max_card = rank_order[-1] if 'G' in hand else hand[l]
# 判断是否可以组成三条
if hand[i] == hand[j] == hand[k] != max_card and hand[l] != 'G':
# 找到一组三条后,将这三张牌从手牌中移除,并继续寻找下一组三条
hand.remove(hand[i])
hand.remove(hand[j-1])
hand.remove(hand[k-2])
hand.remove(hand[l-3])
return calculate(hand) + 1
# 如果没有找到四个三条,返回0
return 0
# 测试代码
hand = ['3', '3', '3', '4', '4', '4', '5', '5', '5', '6', '6', '6', 'G']
print(calculate(hand)) # 输出 4
```
这段代码使用了递归的方式,每次找到一组三条后,将其从手牌中移除,并继续寻找下一组三条,直到找到四个三条或者无法再找到三条为止。
阅读全文