麻将胡牌算法 majiang_algorithm

码农软件 · 软件分类 · 机器学习/深度学习 · 2019-08-05 18:27:42

软件介绍

麻将胡牌算法

majiang_algorithm是带多张鬼牌的通用胡牌算法,采用查表方式,简单高效。

表生成

在生成表的阶段,时间是不值钱的,所以生成方法我们可以任意穷举。

首先分为普通、风、箭三张表。

穷举出所有的key,比如普通表,就是000000000-444420000,因为每一种牌最大4张,且总和不超过14张牌。

对于每个key,生成这个key在不同鬼的情况下的胡牌信息列表。

胡牌信息列表的内容是,在N张鬼的情况下,这个key胡什么牌,并且是否有将。

例如1万2万5万5万:110020000,生成的胡牌信息有。

1万2万5万5万:鬼0 有将 胡3万(0个鬼的时候,这个牌胡3万,此时有将)
1万2万5万5万:鬼1 无将 胡3万胡5万(1个鬼的时候,这个牌胡3万5万,此时无将)
1万2万5万5万:鬼1 有将 胡了(1个鬼的时候,这个牌已经胡了(鬼变成3万),此时有将)
1万2万5万5万:等等...

胡牌算法

有了前面辛苦生成的表格,那么判断胡牌算法就很简单了。对玩家手上的牌进行编码,变成多个key和鬼牌总数。N,例如手牌如下

得到key:110020000、020000000和鬼牌总数2。

对每个key查询表,得到对应的胡牌信息列表。

针对每组列表,过滤掉鬼牌总数>N的项以及没有胡的项,上面的例子就会有。

1万2万5万5万:鬼1 有将 胡了
2筒2筒:鬼1 无将 胡

简单递归下,看看几组胡牌信息列表里,是否满足鬼牌总数和只有一个将的约束。

如果有任意组合满足,则胡了,在上面的例子里,恰好满足条件,于是胡了。

总耗时:查表耗时*M + 递归M层分配鬼和将的耗时M是花色数目,M<=5。

查胡算法

与胡牌算法类似,根据key查出胡牌信息列表。

简单递归下,找出满足鬼的总数和只有一个将的约束时,所有不能胡的胡牌信息里可胡牌的集合,就是这手牌能胡什么牌。

本文地址:https://codercto.com/soft/d/11718.html

运营笔记

运营笔记

类延昊 / 天津人民版社 / 2016-12-1 / CNY 39.80

运营是入门浅但学问深的行当。一个入门很久的人不见得能在11年内爬到塔尖,同样一个初入龙门的人占据高位也不见得非用11年。 到底该怎么做运营?如何做运营才不至于让自己忙死累死甚至茫然不知所措?如何和用户进行有效沟通?如何把握住处于塔尖20%的核心用户?如何强敌逼阵时快速找到突破口?如何挤破头皮提高转化率? 在这本书里,类类以自己常年战斗在一线摸爬滚打的经验给予了有效而真诚的解答。一起来看看 《运营笔记》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具