胡牌算法 · 番数计算 · 听牌判断 · 计分规则
—— 鄱阳麻将规则与算法全解析 ——
鄱阳麻将,又称「鄱阳湖麻将」,是流行于江西鄱阳地区的一种地方麻将玩法。其核心算法围绕胡牌判断、番数计算和听牌分析三大模块展开。
掌握鄱阳麻将算法,不仅能帮助你快速判断手牌是否胡牌,还能精确计算每一局的番数与得分,助你在实战中游刃有余。
鄱阳麻将使用万、条、筒三门数牌(1-9)以及东南西北中发白风牌,共136张牌。每位玩家起手13张牌,庄家14张。
| 牌型 | 说明 | 示例 |
|---|---|---|
| 顺子 | 同门连续三张 | 3万、4万、5万 |
| 刻子 | 三张相同的牌 | 5筒、5筒、5筒 |
| 将牌 | 两张相同的牌(对子) | 东、东 |
| 杠 | 四张相同的牌 | 9条×4 |
1 获取手牌,按牌型编码排序
2 检测是否为特殊牌型(七对、十三幺等)
3 枚举所有可能的将牌(对子)
4 递归拆解剩余牌为顺子或刻子
5 判断是否满足胡牌条件
6 计算番型与得分
胡牌算法是鄱阳麻将中最基础的算法,判断一副手牌是否满足胡牌条件。
1 将手牌按数字编码从小到大排序
2 遍历手牌,找出所有对子作为「将牌」候选
3 对每种将牌候选,移除该对子
4 剩余12张牌尝试拆分为4组顺子或刻子
5 若存在任意一种拆分方案则胡牌
最坏情况下,需要枚举所有将牌和拆分组合,但由于麻将牌数量固定(13/14张),实际计算量很小,一秒钟内可完成数千次胡牌判断。
番数是决定麻将得分的关键,鄱阳麻将的番数计算基于胡牌型与额外条件的叠加。
| 番型 | 番数 | 条件说明 |
|---|---|---|
| 平胡 | 1番 | 基本胡牌,无特殊番型 |
| 碰碰胡 | 2番 | 全部为刻子+将牌 |
| 混一色 | 2番 | 同一门数牌+字牌 |
| 清一色 | 3番 | 全部为同一门数牌 |
| 七对 | 4番 | 七个对子组成 |
| 字一色 | 5番 | 全部为字牌(风牌) |
| 杠上开花 | +1番 | 杠牌后摸牌即胡 |
| 海底捞月 | +1番 | 最后一张牌自摸胡 |
| 抢杠胡 | +1番 | 抢他人杠牌胡牌 |
手牌:一万、一万、二万、三万、四万、五万、六万、七万、八万、九万、九万(清一色+平胡)
番数:清一色3番 + 自摸1番 = 4番
听牌算法用于计算手牌还缺哪张牌就能胡牌,是实战中决策的重要依据。
1 遍历所有未出现的牌(共34种)
2 将每种牌加入手牌,模拟摸牌
3 调用胡牌算法判断是否胡牌
4 记录能胡牌的牌即为听牌
一副手牌可能听多张牌(即多面听)。例如手牌:1万、2万、3万、4万、5万、6万、7万、8万、9万,听1-9万任一张都能胡。
鄱阳麻将中有一些特殊牌型,它们的胡牌判断逻辑与普通牌型不同,需要单独处理。
七对是7个对子组成的特殊胡牌型。判断方法:手牌按数值分组,每组数量必须为2的倍数,且恰好有7组。
碰碰胡要求所有面子均为刻子(或杠),不能有顺子。判断逻辑:从手牌中找到所有刻子和将牌,确认无剩余单牌。
十三幺由1万、9万、1条、9条、1筒、9筒、东南西北中发白各一张,外加其中任意一张凑成对子。
| 特殊牌型 | 胡牌判断方式 | 复杂度 |
|---|---|---|
| 七对 | 数量分组+模2判断 | O(N) |
| 碰碰胡 | 刻子提取+余牌判断 | O(N) |
| 十三幺 | 固定牌型匹配 | O(1) |
| 清一色 | 花色判断 | O(N) |
鄱阳麻将计分根据番数和胡牌方式(自摸/放炮)确定。
| 胡牌方式 | 付分方 | 计算方式 |
|---|---|---|
| 自摸 | 3家各付 | 基础分 × 2 |
| 放炮 | 放炮者付 | 基础分 × 2 |
| 杠上开花 | 3家各付 | 基础分 × 4 |
| 抢杠胡 | 被抢者付 | 基础分 × 4 |
| 杠类型 | 得分 | 付分方 |
|---|---|---|
| 明杠 | 1倍 | 点杠者 |
| 暗杠 | 2倍 | 3家均付 |
| 补杠 | 1倍 | 3家均付 |
鄱阳麻将算法的核心可归纳为:
🏷️ 胡牌判断:递归拆解法,枚举将牌+递归拆面子。
🏷️ 番数计算:识别最大番型+额外加番。
🏷️ 听牌分析:枚举法+胡牌验证。
🏷️ 计分规则:底分 × 2^总番数。