番型判据覆盖
从平胡、碰碰胡到七对、清一色与自摸加番,全部落成独立判据,互斥关系在表中显式标注。
实现质量不只看能不能出结果,还要看判定是否完整、番数是否正确、耗时是否可控、改动是否安全。下面四项是排查问题时最先查看的位置。
从平胡、碰碰胡到七对、清一色与自摸加番,全部落成独立判据,互斥关系在表中显式标注。
成牌拆解、番型匹配、权重合并、封顶裁剪四层分离,任一层出错都能单独定位并替换实现。
计数数组编码配合听牌缓存,把常规结算压进毫秒级,为对局过程中的实时校验留出余量。
每条规则配备可胡与不可胡样本各一组,改判据后直接比对期望番数,避免连锁误伤。
九江麻将的特殊结构集中在副露拆分与番型互斥上,因此实现时把数据结构、判定算法、规则表、权重、边界与日志分开推进,改一处不影响其余部分。
用长度固定的计数数组表示万、条、筒与字牌,配合副露区单独存放,避免每次判定都复制整手牌。
刻子优先、顺子次之的拆解顺序,配合失败回退,一次遍历覆盖全部成牌组合,七对与碰碰胡走独立分支。
番型名、判据表达式、互斥组与优先级写成规则表,新增番型只改配置,判定主干保持稳定。
先把命中番型换算为基础番,再按封顶阈值裁剪并合并自摸、杠上花等加成,结果与规则说明逐条对齐。
抢杠、杠上开花、海底捞月、门清与副露差异等状态下,判定入口与听牌范围都要单独校验。
结算过程输出命中番型、丢弃番型与耗时,配合批量牌谱回放,改规则前后直接对比差异条目。
同样是能算出番数,两种实现方式在规则变动、疑难局面与多人协作时的表现差别很大。下面这组对比来自实际改版过程中的记录。
改版后同样一批牌谱,漏判条目从 27 条降到 0 条,重复计番问题下降至 3 条,全部为规则理解差异而非代码缺陷,回归比对一次即可定位。
从收集规则到上线压测,每一步都有明确的交付物,避免做到后期才发现判据与规则说明对不上。
把番型清单、番数权重、封顶规则与特殊状态整理成一张对照表,先解决口径分歧再谈实现。
确定计数数组顺序、副露存储方式与手牌指纹生成规则,为后续缓存与比对打好基础。
先完成回溯拆解与七对、碰碰胡分支,用基础牌例验证成牌判定是否正确。
接入规则表求值,处理互斥去重、权重叠加与封顶裁剪,逐条比对期望番数。
批量回放牌谱、检查差异条目,再对高复杂度手牌做耗时压测,确认指标达标后上线。
按发布时间排列的判据修订、实现方案与排错记录,均可对照源码与牌例复核。
结算逻辑一旦上线,最怕的是规则说明改了而代码没跟上。以下四条是内容收录与实现维护的共同约束。
每个条目附上具体手牌组合与命中番型,读者能自行摆牌验证,不必依赖结论直接采信。
番型判据与权重表按版本留存,规则调整后能快速切回上一版结算口径做对照。
互斥番型、封顶边界与副露状态差异单独成篇,遇到分歧时有明确出处可查。
结算耗时与回归差集随条目同步更新,性能回落在测试阶段就能被发现。
以下回答来自实际排错与规则对齐过程,涉及判定结构、规则表维护、重复计番、回归样本与性能诊断。
规则读起来一致、代码跑出来不一致的局面,通常卡在成牌拆解顺序或番型互斥关系上。留下你的牌型结构与期望番数,我们按判据逐条核对,给出可验证的修改建议。
填写后我们会按番型判据逐条复核,并在条目中同步修订结果。