python判断福建十三水牌型(带王牌)
时间: 2023-06-29 20:03:19 浏览: 185
判断福建十三水牌型(带王牌)可以通过以下步骤实现:
1. 定义一个函数,接受一个包含14张牌的列表作为参数。
2. 将列表中的牌按照点数大小排序。
3. 判断是否有四张相同点数的牌,如果有,则为“炸弹”牌型。
4. 判断是否有三张相同点数的牌,并且有一张王牌,如果有,则为“天炸”牌型。
5. 判断是否有三张相同点数的牌,如果有,则为“三条”牌型。
6. 判断是否有两个对子,并且有一张王牌,如果有,则为“双王”牌型。
7. 判断是否有两个对子,如果有,则为“两对”牌型。
8. 判断是否有一对,并且有两张王牌,如果有,则为“地炸”牌型。
9. 判断是否有一对,如果有,则为“一对”牌型。
10. 判断是否为顺子牌型,即所有牌的点数连续相邻。
11. 判断是否为同花牌型,即所有牌的花色相同。
12. 判断是否为葫芦牌型,即三张相同点数的牌和一对牌组成。
13. 判断是否为同花顺牌型,即所有牌的花色相同且点数连续相邻。
14. 如果以上都不是,则为“高牌”牌型。
下面是一个示例代码:
```python
def judge_cards(cards):
cards.sort()
counts = [cards.count(card) for card in set(cards)]
kings = counts[13]
counts = counts[:13]
if 4 in counts:
return "炸弹"
elif 3 in counts and kings == 1:
return "天炸"
elif 3 in counts:
return "三条"
elif counts.count(2) == 2 and kings == 1:
return "双王"
elif counts.count(2) == 2:
return "两对"
elif counts.count(2) == 1 and kings == 2:
return "地炸"
elif counts.count(2) == 1:
return "一对"
elif max(cards) - min(cards) == 12:
return "顺子"
elif len(set([card % 4 for card in cards])) == 1:
return "同花"
elif counts.count(3) == 1 and counts.count(2) == 1:
return "葫芦"
elif max(cards) - min(cards) == 12 and len(set([card // 4 for card in cards])) == 1:
return "同花顺"
else:
return "高牌"
```
该函数的参数为一个包含14张牌的列表,其中0~51表示52张牌中的不同牌面,52和53表示小王和大王。函数返回该牌型的字符串表示。
阅读全文