宣城市恳赖之都93号 j9·com@aglaoge.vip

集团游戏

扑克牌牛牛算法

2025-12-27 14:11:23

扑克牌牛牛算法用于计算五张牌的牛牛结果。牛牛游戏的规则是:从五张牌中选出三张,使它们的点数之和为10的倍数,然后剩余两张牌的点数之和的个位数即为牛数。如果个位数为0,则为“牛牛”;如果没有三张牌的点数之和为10的倍数,则为“无牛”。点数计算中,A为1点,J、Q、K为10点,其他牌按面值计算。

以下是Python实现的算法代码,包括牌面值到点数的转换和牛牛计算:

python

from itertools import combinations

def card_to_value(card):

将牌面值转换为点数

if card in ['J', 'Q', 'K']:

return 10

elif card == 'A':

return 1

else:

# 处理数字牌,包括'10'

return int(card)

def niuniu(cards):

计算五张牌的牛牛结果

:param cards: 五张牌的列表,每张牌用字符串表示,如['A', '2', '10', 'J', 'Q']

WEpoker官网

:return: 字符串,如'牛牛'、'牛1'、'无牛'

# 将牌转换为点数

points = [card_to_value(card) for card in cards]

total = sum(points)

# 生成所有三张牌的组合

for comb in combinations(range(5), 3):

sum3 = points[comb[0]] + points[comb[1]] + points[comb[2]]

if sum3 % 10 == 0:

sum2 = total

  • sum3
  • nius = sum2 % 10

    if nius == 0:

    return "牛牛

    else:

    return f"牛{nius}

    return "无牛

    # 测试示例

    if __name__ == "__main__":

    test_cases = [

    ['A', '2', '3', 'J', 'Q'], # 无牛

    ['10', '10', '10', '10', '10'], # 牛牛

    ['A', '9', '10', 'J', 'Q'], # 牛牛

    ['A', '9', '10', 'J', '9'], # 牛9

    ['1', '2', '7', '10', '10'] # 牛牛

    for cards in test_cases:

    result = niuniu(cards)

    print(f"{cards} -> {result}")

    算法说明:

    1. 点数转换:将牌面值(如'A'、'10'、'J')转换为对应的点数。

    2. 总和计算:计算五张牌的总点数。

    3. 组合检查:使用`binations`生成所有三张牌的组合,检查每个组合的点数之和是否为10的倍数。

    扑克牌牛牛算法

    4. 牛数计算:如果找到满足条件的三张牌,计算剩余两张牌的点数之和的个位数,确定牛数。

    5. 结果返回:根据牛数返回相应字符串。

    测试结果:

  • `['A', '2', '3', 'J', 'Q']` -> `无牛`
  • `['10', '10', '10', '10', '10']` -> `牛牛`
  • `['A', '9', '10', 'J', 'Q']` -> `牛牛`
  • `['A', '9', '10', 'J', '9']` -> `牛9`
  • `['1', '2', '7', '10', '10']` -> `牛牛`
  • 此算法高效准确,适用于牛牛游戏的结果计算。