牌墙编码与洗牌
把整副牌映射为牌型编号加花色位,洗牌采用带种子的随机置换。同一颗种子必然还原同一副牌序,回放与争议复核都从这里开始。
一局牌从发牌到结算,判定链路上真正容易出错的地方集中在六处:牌序、拆解、胡牌入口、番型关系、听牌统计与分摊责任。列表按这六个模块逐条展开,每条都标注它依赖哪些上游状态、会向下游输出什么字段。
把整副牌映射为牌型编号加花色位,洗牌采用带种子的随机置换。同一颗种子必然还原同一副牌序,回放与争议复核都从这里开始。
按刻子优先、顺子次之的顺序递归拆解手牌,遇到多种拆法时保留全部组合,交给番型判定挑选收益最高的一组。
自摸、点炮、抢杠、杠上开花分别走独立入口,先判牌型是否成立再计算番数,避免边界状态下前后判断互相覆盖。
清一色、碰碰胡、七对、混一色等牌型分成互斥组与叠加组,命中后输出番数、触发依据与参与计算的牌张。
对手牌逐张试补,统计有效进张与剩余张数,给出听哪几张、听几张、还差几向听三层结论,并标注是否被碰杠吃影响。
杠分、底分、翻数与包三家按参数表逐项计算,流局与荒庄走独立分支,每一笔分摊都能回溯到具体触发事件。
算法条目按难度分了三层,逐层往上推进比一次性啃完全部逻辑更稳。每一层都有对应的输入格式与验收标准,做完一层就能确认下一层不会建立在线索不清的结论上。
输入四副手牌与固定牌墙,输出胡牌结论与番数明细,用于确认基础判定链路是否打通。
补齐摸打顺序、碰杠吃与流局分支,跑通多轮对局,验证同一房间参数下的结算一致性。
用种子重放整局,逐步比对状态快照,把分歧精确定位到某一巡的某个判定分支上。
有人需要的是能直接跑起来的样例数据,有人需要的是可随时查阅的规则说明,还有人在接入前要把房间参数逐条对齐。三种方式内容侧重不同,覆盖的范围也不一样。
适合自研团队在开发阶段对照实现
验收标准:单局结论与样例完全一致
适合复盘、教学与规则核对场景
验收标准:争议手数能定位到具体分支
适合平台上线前做参数对齐
验收标准:新旧版本切换零结算争议
每周固定时段放出当周新增的番型判定条目与配套样例,包含触发条件、互斥关系与翻数来源说明。上一周开放的杠上开花与抢杠冲突分支已并入主列表,历史样例仍可在更新记录里查到对应的说明段落。
下面这几条是争议最集中、也是被反复对照的位置。它们共同的特点是牵涉多个上游状态,一旦顺序写反就会得出看似合理但其实算错的结论。
七对成立的前提是七组对子加一张单张做将,四张相同牌算两对还是算一杠需要按房间参数决定,判定前必须先确定这条口径。
补杠被抢时,杠上开花的加番是否保留取决于两家动作的先后判定。列表给出两种口径各自的处理流程与输出字段。
同样的听口在不同现张下价值差别很大,枚举时需要扣掉已打出的牌、明刻与自家手牌,才能得到真实有效进张数。
包三家触发后,原本由点炮一方承担的分数要在三人之间按比例重新分摊,分摊顺序与杠分是否参与计算需要分开处理。
换房间规则时真正需要改动的字段并不多,映射表列出每个参数影响的判定分支,避免整段逻辑推倒重写。
算法条目不是给单一角色准备的。写代码的人关心分支能否覆盖,做复盘的人关心结论能否复现,讲规则的人关心依据能否讲清,三者需要的其实是同一份东西。
上线前把房间参数与判定顺序逐条核对一遍,比上线后靠玩家反馈找问题成本低得多。列表里的边界用例可以直接当作验收清单使用。
一手有争议的抢杠,用种子重放配合状态快照,能定位到具体巡目的判定结果。核查记录可以连同样例编号一起存档,便于后续追溯。
翻数从哪来、番型为什么互斥,讲清楚需要能落到具体条目上。列表里每条都写了触发依据,转述时不会说成模棱两可的经验。
拿样例数据搭一套自测脚本,每次改完判定逻辑跑一遍,能立刻看出哪一层的结论发生了变化,不必等到实际对局才暴露问题。
他们遇到的问题各不相同,但共同点是把模糊的规则描述换成了能对上号的判定分支,争议处理的时间明显缩短了。
做房间结算最怕七对和碰碰胡打架。按列表里的互斥关系把判定顺序调过来之后,线上关于番数算错的争议单少了一大半,也不用每次都翻聊天记录去解释。
复盘一局有争议的抢杠,用种子重放一路比对状态快照,十分钟就定位到第三巡那个判定分支。以前这种手数只能靠几个人凭印象吵。
讲规则最怕说不清翻数是怎么来的。列表里每一条都带着触发依据和样例,直播时可以直接念给观众听,被追问也能补上具体分支,心里踏实很多。
每条条目注明适用的规则版本与参数口径,不把不同版本的结论混在一起说。
公开样例带牌墙种子与状态快照,同一份输入任何时候跑出来都是同一份结论。
条目调整会写清改了什么、影响哪些分支,历史版本的处理方式照样查得到。
页面不放弹窗与浮层遮挡,算法条目与对照表可以完整读完再决定是否深入。
新增与修订的条目会先在这里出现,内容包括判定顺序调整、样例数据补充与规则口径澄清。需要追具体某一条的改动原因时,从这里进正文最快。
每次调整都会写明改动原因与影响范围。如果你手上的实现和列表结论对不上,先看这里有没有对应时间点的口径变化,很多分歧其实来自版本不一致。
按两种常见口径分别列出处理流程,新增 12 组覆盖样例,并在输出字段里区分加番是否保留。
枚举结果不再只报听口,同时给出扣减已现张与明刻后的有效进张数,附带全部牌面的覆盖核对表。
把包三家的分摊从主流程中独立出来,补充三人分摊的边界用例,并明确杠分是否参与二次分配。
判定、策略与结算三者互相牵连,但关注点完全不同。按你当前最需要解决的问题选一条线索往下看,比从头通读省时间。