胡牌算法 · 番数计算 · 宝牌规则 · 完整技术解析
鄱阳麻将是流行于江西鄱阳地区的地方麻将玩法,其算法体系结合了传统麻将基础判定与区域特色规则。整个算法可拆解为以下四大核心模块:
在程序化实现时,开发者需要将麻将牌映射为唯一ID,通过状态机与递归回溯算法实现胡牌检测,同时结合鄱阳特有的"宝牌"机制,使算法具备万能牌匹配能力。
鄱阳麻将胡牌判定通用公式为:胡牌牌型 = N×AAA(刻子) + M×ABC(顺子) + 1×DD(将)。算法实现遵循以下步骤:
将万条筒分别编码为1~9数字区间,风牌编码为31~37,箭牌编码为41~43。排序后便于分组识别。
算法首先尝试提取一对将牌(DD),然后对剩余牌递归拆分为顺子(ABC)或刻子(AAA)。当所有牌都被匹配时,判定为胡牌。
当手牌中存在宝牌时,算法将宝牌视为"万能牌",在递归的每一层尝试让宝牌替代任意牌参与匹配。计算量随宝牌数量呈指数增长,需引入剪枝优化。
鄱阳麻将采用"底番+加番"的累计计算模式。基础番数表如下:
| 番型 | 基础番数 | 说明 |
|---|---|---|
| 平胡 | 1番 | 普通4副*1将 |
| 自摸 | +1番 | 自己摸牌胡 |
| 碰碰胡 | 2番 | 全部刻子 |
| 清一色 | 3番 | 同一花色的牌 |
| 七对 | 4番 | 7个对子 |
| 十三烂 | 3番 | 牌张互不相连 |
| 杠上开花 | +1番 | 杠后补牌胡 |
| 抢杠胡 | +1番 | 抢他人补杠的牌 |
番数计算规则在不同乡镇略有差异,主流约定最低1番起胡,封顶番数通常为10番或16番。
鄱阳麻将开局后从牌墙尾部翻出一张牌,该牌的点数+1即为"宝牌"(如翻开5万,则6万为宝)。宝牌属于万能牌,可替代任意一张牌参与胡牌,但打出的宝牌只能按原值使用。
杠分为暗杠、明杠和补杠。算法需检测杠牌后的补牌操作,以及是否触发"杠上开花"加番。抢杠只针对补杠,暗杠不能抢。
在某些鄱阳麻将变种规则中,宝牌本身也算番(每张宝牌加1番),因此算法在番数计算时需额外统计手牌中宝牌的数量。
鄱阳麻将AI或辅助工具的完整算法流程为:
对于人工智能的摸打策略,算法还需加入蒙特卡洛树搜索或期望值评估,以决定出牌策略,这类高级算法通常应用于棋牌AI研究。