当前位置:首页 > 作者专栏 > 正文

必学教程“哈哈贵阳捉鸡麻将算法”教你胡牌神器

基础胡牌条件

  1. 牌型组成

    • 共14张牌(4副顺子/刻子 + 1对将牌)
    • 特殊牌型:七对、龙背等(需提前确认规则是否支持)
  2. 关键牌型

    • 顺子:同花色连续三张(如万子234)
    • 刻子:三张相同牌(如3条)
    • 将牌:两张相同的牌作对子

捉鸡麻将特有规则

  1. "鸡牌"机制

    • 固定鸡:通常为1条(开局即确定)
    • 翻鸡:流局后翻开第1张或最后1张牌,其相邻牌为鸡(如翻到5万,则6万是鸡)
    • 中鸡:玩家手牌或碰杠中有鸡牌,需额外计分。
  2. 杠牌加分

    明杠、暗杠、弯杠均触发额外积分(具体分值需按当地规则)


胡牌算法逻辑(代码示例)

def is_win(hand):
    # 检查七对(特殊牌型)
    if len(hand) == 14 and len(set(hand)) == 7:
        return True
    # 普通胡牌:4组3张 + 1对
    from collections import defaultdict
    count = defaultdict(int)
    for tile in hand:
        count[tile] += 1
    pairs = [t for t, cnt in count.items() if cnt >= 2]
    for pair in pairs:
        temp_count = count.copy()
        temp_count[pair] -= 2
        if can_form_melds(temp_count):
            return True
    return False
def can_form_melds(count):
    # 递归检查剩余牌是否能组成顺子/刻子
    for tile in count:
        if count[tile] >= 3:  # 刻子
            count[tile] -= 3
            if can_form_melds(count):
                return True
            count[tile] += 3
        if tile[0] == '万' or tile[0] == '条' or tile[0] == '筒':  # 顺子(需花色连续)
            # 此处需实现顺子检测逻辑(简化示例)
            pass
    return sum(count.values()) == 0

注意事项

  1. 必选规则

    • 明确是否支持"冲锋鸡"(打出的鸡牌被胡时加倍罚分)
    • 确定"金鸡"(杠上开花时翻倍的鸡牌)规则
  2. 策略提示

    • 优先保留可能形成多鸡的牌(如1条、翻鸡相邻牌)
    • 杠牌时机影响胜负,需权衡风险与收益

有话要说...