网上有关“(麻将程序)对于和牌判断的是什么”话题很是火热,小编也是针对(麻将程序)对于和牌判断的是什么寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。
先进算法当然有啊,有详细的介绍,思路非常屌爆。
大体意思如下(以下掺杂我的个人理解,可能有解释错误之处。会日语的读者请尽量阅读链接原文):
暴力拆解比较吃计算,查表法比较吃内存,虽然这两者对于当今的PC都不是问题,但如果平台机能特别有限,可以采用改进的查表法。
基础的查表法,是给每种牌编一个id,麻将中共34种牌因此需要至少6位空间。手牌14张也就是84位。要保存和牌的全部组合约1700万种需要约175MB存储。
改进的思路是先给手牌排序,然后不管具体牌面,只计算连续牌的张数,得到一个「牌型」,再从表中查牌型是否胡。
例如222456万345678饼北北,可以编码为30111011111102(三张相同牌,三张连续牌,六张连续牌,两张相同牌,中间隔开)。
下一步是将其二进制化,采用如下特制规则:
1→0
2→110
3→11110
4→1111110
10→10
20→1110
30→111110
40→11111110
很容易看出,这样编码后每张牌只占用1到2位空间,最恶情况子下(十四张不连单牌)仅占用27位。跟之前的84位相比,单组数据压缩了三分之二以上。更牛逼的是,和牌表从1700万种具体组合下降到仅仅9362种形状排列!
另外,作者反复强调:查表时需要大量整型比较运算,将数据控制在32位以内对于(2008年成文当时主流的)32位CPU本身也是优化(省操作次数)。
结论上,根据作者测试,优化后的查表算法比暴力拆解快大约50倍,而且速度特别稳定。相对地,传统的拆解法碰上清一色这种同色牌多的牌型会变慢。
还有一个是役的计算,分为事后判定(先检查是否和牌、再检查役种)和事前判定(检查和牌的同时检查役种)。文中的算法支持一部分役的事前判定。
最后再贴一遍地址。
推倒和:即垃圾和,只要和牌时不是对对和,大钓,捉五魁,海底捞月,一条龙,七对子,杠上开花,清一色,豪华七对子,四惠牌,天和,地和这些加番牌型,就视作推倒和。(1番)
庄:庄家和牌或放铳时计此番型,闲家自摸不计此番型。(1番)l
门清无惠:没有吃碰明杠过的牌型且手中没有惠牌。(1番)l
l 对对和:和牌时的14张牌有4个“刻子”和一个“对子”。(2番)
大钓:吃碰12张牌,只剩一张单钓和牌。(2番)l
l 捉五魁:和牌时只和嵌单“五万”一张牌的牌型。(2番)
l 海底捞月:拿到海底牌最后一张时和牌称为“海底捞月”。(2番)如果最后一张所出的牌给别人放了铳,也要给别人加1番,番型也是“海底捞月”。
l 一条龙:和牌时手牌中凑齐一种花色的 “1--9”为“一条龙”。(3番)
七对子:14张牌为7个对子的和牌方法叫“七对子”. (4番)l
l 杠上开花:听牌时开杠补得的牌为自摸牌称为“杠上开花”(5番)
清一色:和牌的14张均为一种花色时称为“清一色”(6番)l
l 豪华七对子:七对子中有两对一样的对子时称“豪华七对子”,“豪华七对子”不计“七对子”(8番)
四惠牌:摸齐四个“惠牌”时自动和牌。(8番)l
天和:庄家在一局还没有出过牌的时候构成可和牌牌型时称“天和”,“天和”不计“庄”(10番)l
l 地和:闲家在一局还没有出过牌的时候构成可和牌牌型时称“地和”
关于“(麻将程序)对于和牌判断的是什么”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!
本文来自作者[admin]投稿,不代表东南号立场,如若转载,请注明出处:https://dnflianfa.com/xwzx/202501-17682.html
评论列表(4条)
我是东南号的签约作者“admin”!
希望本篇文章《传递经验“微乐免费房间谁开谁输”的确有挂》能对你有所帮助!
本站[东南号]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育
本文概览:网上有关“(麻将程序)对于和牌判断的是什么”话题很是火热,小编也是针对(麻将程序)对于和牌判断的是什么寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望...