张数校验
按副露组数折算手牌应有个数,普通成牌为三的倍数加二。张数不符一律先返回待复核,不进入拆分。
牌型拆分只有建立在正确的张数与结构基础上才有意义。以下四项在每条胡牌条目里都会被最先执行,任一项不通过就直接返回不成牌,避免后续枚举产生大量无效组合。
按副露组数折算手牌应有个数,普通成牌为三的倍数加二。张数不符一律先返回待复核,不进入拆分。
成牌结构中必须恰有一对作将。把对子逐一取出试配,剩余牌若能完整凑成面子,这条分支才成立。
顺子与刻子交替尝试,按牌值从小到大固定最小张,递归收窄剩余牌组,保证同一手牌不会重复计数。
七对、全不靠类结构不走面子拆分,改为独立的成对计数通道,与常规分支并行判定后合并输出。
顺序本身就是条目的一部分。同样的牌面换一个执行次序,杠后补牌、抢杠胡这类时点相关的判定就会得出不同结论,因此每一步都标注了输入与产出。
分离手牌、副露与杠区,标记牌的来源与是否癞子,形成可比较的牌值序列。
副露固定为已完成面子,癞子按可替代集合登记,避免后续拆分时反复解释。
在对子、顺子、刻子三类组合上递归推进,遇到癞子则展开替代分支。
面子凑齐后确认恰有一对作将,冲突或缺失即回退到上一条枚举路径。
给出成牌与否、命中分支名与时点标记,供番型计分环节直接取用。
平胡、七对、碰碰胡与杠上开花在判定上互斥又相邻,条目对每类都写明进入条件、拆分方式与结果标注,避免同一手牌被两条分支同时认领。
最常见的基础结构。条目要求面子全部由顺子与刻子混合构成,将牌唯一,且不含碰碰胡、七对等加番特征。
不计面子,只数对子。四张相同牌按两对折算,折算结果与实际张数同时记录,便于区分加番标注。
四组面子必须全部为刻子或杠,将牌为对子。判定时先按刻子优先拆分,失败再回退到普通拆分路径。
同一手牌在不同牌桌上有不同说法的情况,几乎都集中在这几处。条目把触发条件与输出结果并列写出,复盘时按行对照即可。
每条记录都按固定字段书写,字段之间互不覆盖,便于横向比较不同分支的差异,也方便在实现判牌逻辑时直接映射成数据结构。
字段结构对全部判定条目保持统一,修改某一分支时不会影响其它分支的读取方式。
时点类条目不改变拆分方式,只在结果上追加标记,避免与基础成牌条件混写。
拆分逻辑本身没有问题时,结论仍可能出错。以下三点在复盘中反复出现,条目对每种情况都给出了纠正方式。
杠后补牌前、碰牌刚完成时,牌数并未稳定。此时判胡会得到看似成立的结果,但与真实牌局不符。
副露面子已经固定,若在拆分时再次参与组合,会虚增可用面子数量,导致本不成牌的牌型被判成立。
癞子可以顶上任意缺口,但替代关系需要留下记录。没有记录的替代会让后续番型判断失去依据,也难回溯。
来自复盘核对与逻辑实现两端的提问,答案直接对应条目中的分支写法。
牌桌上遇到过两种说法都能自圆其说的牌型?把当时的牌面、副露状态与争议点写下来,补充条目会在核对结构后并入对应分支,并标注适用的时点与前置条件。