天天看點

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連結