天天看点

erlang实现麻将胡牌以及癞子胡牌算法

判断胡牌

麻将胡牌其实是按照nAAA + mABC + DD的套路,算法判断也很好实现,找出DD,然后剩下的牌都能形成AAA或者ABC即可胡牌。本文只介绍麻将普通胡牌的算法,该算法经过验证可判断除特殊牌型外(十三幺,七对等)的所有胡牌牌型。

判断癞子胡牌

癞子胡牌的实现也是基于该胡牌算法,通过去掉癞子的牌型分析和癞子数得到癞子组合,根据癞子数和牌型形成癞子组合,把组合与原牌型合并再判断胡牌即可。优于其他癞子算法的是,该算法可以得到手牌的最终牌型,即可知道癞子具体变成什么牌。

癞子胡牌的牌型分析

和胡牌类似,先找出DD。由于癞子也能作为D,可形成多种去除DD的牌型,根据去除DD牌型和剩余的癞子数去获得癞子可形成的组合。去除DD的牌全是坎刻即可胡牌,所以剩余癞子全部要作为坎刻。

相关函数

判断胡:check_hu
 判断胡找出DD:move_dui_pai_list
 判断癞子胡:check_lai_hu
 判断癞子胡找出DD:get_lai_dui
 分析牌型坎刻:get_kan_ke
 merge牌型和癞子组合:check_combin_hu
           

github链接