具有列表理解的 7 张牌扑克手牌检测中的 5 张牌
5 card straight in 7 card poker hand detection with list comprehension
我正在编写一个 7 张纸牌手牌评估脚本以供学习之用。
目前正在编程直线检测。
虽然我已经找到了一个可行的解决方案,但它不是很好 'pythonic' 因为它检查它是否有 A-5 顺子,然后在另一个语句中它检查其余的顺子。蹩脚的。
我已经创建了一个可能的顺子列表:
# 01 = Deuce, 13 = Ace
STRAIGHTS = [sorted([13, *range(1,14)][n:n+5]) for n in range(0,10)]
这包括讨厌的 A-5 顺子。
现在我要做的是将我的手与这些列表相交,看看这个交点的长度是否大于 5。
如果我这样做:
if len([item for item in hand if item in [13,1,2,3,4]) >= 5
它就像一个魅力。但是,如果我将 STRAIGHTS 列表捕捉到硬编码列表上,它就不起作用了。这是为什么?
if len([item for item in hand if item in STRAIGHTS) >= 5
else:
我假设你的 hand
也是一个整数列表
if max([len(set(hand).intersection(set(s))) for s in STRAIGHTS]) >=5
我正在编写一个 7 张纸牌手牌评估脚本以供学习之用。 目前正在编程直线检测。
虽然我已经找到了一个可行的解决方案,但它不是很好 'pythonic' 因为它检查它是否有 A-5 顺子,然后在另一个语句中它检查其余的顺子。蹩脚的。
我已经创建了一个可能的顺子列表:
# 01 = Deuce, 13 = Ace
STRAIGHTS = [sorted([13, *range(1,14)][n:n+5]) for n in range(0,10)]
这包括讨厌的 A-5 顺子。
现在我要做的是将我的手与这些列表相交,看看这个交点的长度是否大于 5。
如果我这样做:
if len([item for item in hand if item in [13,1,2,3,4]) >= 5
它就像一个魅力。但是,如果我将 STRAIGHTS 列表捕捉到硬编码列表上,它就不起作用了。这是为什么?
if len([item for item in hand if item in STRAIGHTS) >= 5
else:
我假设你的 hand
也是一个整数列表
if max([len(set(hand).intersection(set(s))) for s in STRAIGHTS]) >=5