成麻麻将掷骰子骰子点数怎么看

今天看啥 热点:
成都麻将胡牌问题算法,成都麻将算法题设:
&*&成都麻将只能包括3种类型:筒(D),万(W),条(T)。没有&门、东南西北、红中&。&*&每种牌都是数字从1到9,每个数字有4张,共36张。筒(D),万(W),条(T)均一样。&*&&*&胡牌规则如下:&&*&1、手里面的牌最多只有两种类型,即必须打缺一种,不能出现:条,筒,万都存在的情况。&*&2、必须有一个对子,即两张相同的牌,比如:两个2筒,两个4条等。&&*&3、剩余的牌,每3张需要凑成一个有效牌,比如:3个一样的牌(3个2筒),&*&或者3个顺子(1条2条3条),如果所有的牌都能够凑好,再满足规则2和1,有一个对子,&并且所有的牌只有两种类型,&*&那么就可以胡牌了。&*&4、有一种特殊牌,叫做七对,即全部的牌都是成对出现,&比如:2筒2筒5筒5筒3筒3筒4条4条8条8条1条1条2条2条,&*&一共7对,再满足条件1,也可以胡牌。&*&5、假设牌不会出现碰的情况,即手里面的牌肯定是14张。&输入数据肯定都是麻将牌,不用考虑异常输入;也不用考虑会输入&门&,&红中&等成都麻将中不会出现的牌
* 输入14张牌,判断能不能胡牌。
* 例如: 输入:1D1D2D2D3D3D4W4W5W5W6W6W7W8W 输出:False; 输入:1D1D1D3D3D3D4D5D6D7D8D9D4D4D 输出:True
分析,建模:
0 以下的分析不包括7组对胡牌的情况,这种情况由于其特殊性,单独处理。
1 关于牌面的关系,比较特殊的两种情况是:相同,连续。用户输入的是字符,对于后一种关系的判断不是很方便。怎么办呢?很自然的就可以想到为每张牌面编码,相邻的牌面的编码也连续。于是,我们很自然的想到,总共三种牌,每种从1到9,那么需要27个数就可以。于是假设&D&的牌编号从0到9,&W&的牌面编号从10到18,&T&的牌面编号从19到27。按照这样的编码方式,如果手中的牌是1D1D1D,则对应的编号列表就是[1,1,1];顺子的编号就是[i, i+1, i+2]。
2 关于牌面组合的方法。因为要胡牌,所有的牌必须和其他的牌以某种关系组合,在牌面已经编码的情况下,这种关系就是找到三张一样的牌或者连续的三张牌。考虑,假设牌堆有牌i和i+2,而没有i+1,那么i和i+2是不会发生任何联系的,也就是说,牌面编码上联系或相同的牌才可能发生联系。于是,可以先对手牌排序,我们以此从前向后来寻找这样的关系,找到就剔除,继续下去。如果最后所有的牌都能被剔除,则可以胡牌。比如说,某个阶段,序列的前三个数值为[9,10,11]我们就可以认为他们是9D1W2W。。。等一下,好像出问题了。这种情况下。虽然数值上连续,但是实际上却横跨了两个花色。对于这个问题,有两种解决方法,第一种,就是在后期判断时,以9n为界限,不许出现跨界配对,第二种,就是对我们的编码规则稍作修改,仔细考虑会引起这个问题的原因是我们在编码时只加入了对点数的考虑,没有能区别花色的因素。为了让不同花色的牌面不能配对,我们在编码时加入间隔。最简单的一种方法就是:&D&的牌编号从1到9,&W&的牌面编号从11到19,&T&的牌面编号从21到29。以下是关于牌面编码的代码:
class SiChuanMaJiang(object):
pattern = ('D', 'W', 'T')
def __init__(self, pai):
= int(p[0])
self.view = pai
= SiChuanMaJiang.pattern.index(self.pt)*10 + self.num #编码,通过间隔一个数字,达到区别花色的目的
这样,再后期检索列表配对时,就不会出现跨花色配对的麻烦。
现在附上整个过程的代码(没有考虑7对出现的情况):
1 class SiChuanMaJiang(object):
pattern = ('D', 'W', 'T')
def __init__(self, pai):
= int(p[0])
self.view = pai
= SiChuanMaJiang.pattern.index(self.pt)*10 + self.num
10 class InputParse(object):
@classmethod
def split_pai(cls, input): # 把字符串分开
result = []
for i in range(0, 28, 2):
result.append(input[i:i+2])
return result
18 class PaiAnaly(object):
def __init__(self):
self.total_num = 0
self.patterns = []
self.id_list
def next_one(self, pai_instance):
if pai_instance.pt not in self.patterns:
self.patterns.append(pai_instance.pt)
self.id_list.append(pai_instance.id)
self.total_num += 1
@staticmethod
def qi_pai(pai_instance_list): # 对整个手牌进行统计
pai_mian = PaiAnaly()
map(lambda x: pai_mian.next_one(x), pai_instance_list)
return pai_mian
@staticmethod
def find_ok_three(sort_list):
if sort_list[0] == sort_list[1] and \
# 因为已经排序,所以直接找前三个是否相同,相同就返回
sort_list[1] == sort_list[2]:
return sort_list[1], sort_list[2]
for i in range(1, len(sort_list)): # 寻找sort_list[0]+1
if sort_list[i] & sort_list[0] + 1:
return False
if sort_list[i] == sort_list[0] + 1:
if sort_list[i] == sort_list[0]:
if idx1 == 0:
return False
for j in range(idx1+1, len(sort_list)): # 在找到sort_list[0]+1的情况下,寻找sort_list[0]+2
if sort_list[j] & sort_list[idx1] + 1:
return False
if sort_list[j] == sort_list[idx1] + 1:
if sort_list[j] == sort_list[idx1]:
if idx2 == 0:
return False
return sort_list[idx1], sort_list[idx2] # 若找到,就返回。
@staticmethod
def recur_check(lt): # 递归过程
if len(lt) != 0: # 当列表为空,就认为可以胡牌
re = PaiAnaly.find_ok_three(lt)
if not re:
return False
else: # 如果依然能够配对,就去除已经配对的牌,继续递归调用
lt.remove(lt[0])
lt.remove(re[0])
lt.remove(re[1])
return PaiAnaly.recur_check(lt)
return True
def find_duizi(self): # 找出手牌中所有的对子,然后以每个对子作为头,调用以上的递归过程
for i in range(13):
# print self.id_list[i]
if self.id_list[i] == self.id_list[i+1] and \
self.id_list[i] != self.id_list[res[-1]]:
res.append(i)
except IndexError:
res.append(i)
return res
def judge_hui(self):
self.id_list.sort()
if self.total_num != 14:
return False
if len(self.patterns) == 3:
return False
duizi_index = self.find_duizi()
print '本来牌面: %s' % self.id_list
for idx in duizi_index:
tl = copy.deepcopy(self.id_list)
print '对子: %s%s' % (tl[idx], tl[idx+1])
val = tl[idx]
tl.remove(val)
tl.remove(val)
print '去除对子以后的牌面: %s' % tl
PaiAnaly.recur_check(tl)
'-------------'
return True
120 if __name__ == '__main__':
pai_string = raw_input('牌面:')
pai_list = InputParse.split_pai(pai_string)
pai_instance_list = []
for p in pai_list:
pai_instance_list.append(SiChuanMaJiang(p))
pai_ready = PaiAnaly.qi_pai(pai_instance_list)
r = pai_ready.judge_hui()
print '胡了'
print '不能胡'
以上的代码看似没有问题,其实,任然有一点不足:
在find_ok_three方法中,我们找到三张一样就返回,没有寻找是不是还存在顺子的情况,举个例子:假设此时列表中的前5张牌为[1,1,1,2,3,...],那么这个时候,我们的程序会返回对牌1,1,1,然后程序会把这些数删除,继续递归过程。而另一方面,如果,我们先删除1,2,3然后再递归,那么这两次递归的结果会不会有什么不一样呢。再进一步说,优先删除对牌,进行递归,会不会造成误判,即:是否本来可以判定胡牌的牌面,因为优先删除对牌的策略,导致判定为不能胡牌。
现在,我们假设,优先删除对牌不会造成误判,即证明:
"""优先选择去除三个一样的算法是对结果无害的。"""
证明过程:#&能去除3个,只有两种情况:前三个一样&或者&前四个一样。# (1) 若前三个一样。假设为a,则序列为[a,&a,&a,&a+1,...]#&&&&&&则胡牌可能为{[a,&a,&a], 其他序列...},或者{[a,&a+1,&a+2],&[a,&a+1,&a+2],&[a,&a+1,&a+2],&...},&#&&&&&&可以看到,在第二种情况下,a+1,a+2&也至少有3个,#&&&&&&分类讨论:# & & & & &(A) a+1 个数= 3&&&a+2 个数 &=&3#&&&&&&&&&&这时按照优先去除三个一样的做法,会依次去除三个a+1,&三个a+2,则剩余的牌的数量和第二种一致,这时候,判定结果只取决于最后三张牌,显然无影响。
## & & & & &(B) a+1 个数=&4&&&a+2 个数&=&3#&&&&&&&&&&这时会先去除三个a+1,&剩余一个a+1,必然配对{a+1,&a+2,&a+3},&又有a+2的张数大于等于3,所以若此时想配对,只有可能是[a+2,&a+2,&a+2]# & & & & &这种情况下的能胡牌的牌面是固定的[a,&a,&a,&a+1,&a+1,&a+1,&a+1,&a+2,&a+2,&a+2,&a+2,&a+3],算法判定胡牌,不会出错。
# (2) 若前四个一样。假设为a,则序列为[a,&a,&a,&a,&a+1,...]#&&&&&&则胡牌可能为{[a,&a,&a],&[...]},或者{[a,&a+1,&a+2],&[a,&a+1,&a+2],&[a,&a+1,&a+2],&[a,&a+1,&a+2]},&#&&&&&&可以看到,在第二种情况下,只有一种情况能胡牌:a,&a+1,a+2&各有4个,#&&&&&&按照优先去除三个一样的算法,依次做下去,会依次去除[a,&a,&a],&[a,&a+1,&a+2],&[a+1,&a+1,&a+1],&[a+2,&a+2,&a+2],判定胡牌,不会出错。#&&&&&&#&&综上,优先去除三个一样的做法一定能得到正确答案,若改进题目为求所有可能的胡法,则需要分叉处理。&
暂无相关文章
相关搜索:
相关阅读:
相关频道:
&&&&&&&&&&&&&&&&
Python教程最近更新最完整最正宗的四川麻将(成都麻将)规则与技巧(血战到底版)(第5版)
康师傅闲说麻将系列博客目录:1.想学习川麻血战到底通用规则与技巧的看:2.想学习四个人如何玩两色牌血战的看:3.想五六个人一起玩血战到底的看:4.想了解川麻精神的看:5.想了解川麻文化的看:
喜欢本文,还可关注微博“”,以及微信公众号“最麻将”(zuimajiang),更多精彩内容在这里,推荐给大家。
又注:明天世界杯就开始了,又逢周末,最美好的事情莫过于边打麻将,边看球赛了!
本文关键词:四川麻将、成都麻将、血战到底,规则、技巧。
根据微博上和博客上,以及线下一些朋友的意见和建议,特别是近年实战中的一些案例,再做第五次修订(日),加入一些康师傅在实战中的理解和说明。
凡例:本文用打1/2/4/8元……(不封顶)的赌资规格举例,如普通“对对胡”(“对子胡”/“大对子”)就是两番(2元),这样表示是避免大家对“番”和“倍数”的混淆理解。本文同时也修正了一些术语在四川话里的叫法等,并调整了一些文字,尽量简洁点。本规则包含四川麻将的“普通版”/“血战到底”的规则。
血战到底:四川麻将(血战)采用四川地区流行的麻将打法,尤其是成都及周边比较盛行的打法。
血战到底的核心精神是这两点:
1.打缺门,必须打掉其中一门,胡牌时手上最多有两门牌。黄庄查花猪(黄庄时手上还有三色牌),黄庄就是牌摸完了,还有两家或两家以上的没有胡牌。
2.一局牌中,一家胡牌并不结束牌局(胡牌的人不要掀开自己的牌,只需要摆出胡牌的那张即可),而未胡的玩家继续打,直到3家胡牌或剩余的玩家都没胡(黄庄)。这样先胡的玩家并不一定获利最多(甚至可能输,比如被他人刮风、下雨)。点炮的玩家也能翻身,提高了搓麻的战斗性和趣味性,照顾了鸽派和鹰派的作战风格。牌局结束,一并结算。
尽管本文讲述的规则可能是目前最统一、最完整、最正宗的了。但切记规则都是人定的,只要体现公平、激励的原则即可,可以对其中的规则进行取舍。比如增加“一条龙”,如同“幺九”(川麻中“幺九”牌型叫“带幺/带幺九”)的规格处理,算3番(4元)。纵观川麻的规则,真真是极好地体现了公平竞争的游戏规则,融入了技术和运气的成分。
四川麻将不要那些红中白板等一切花牌,一副牌共108张,就筒、条、万,各36张,
4人同时玩。庄家十四张,先出牌,其余3家各13张。现在发展到可以3人玩两色牌,或4人玩两色牌,规则参见这里的其他文字。&
◆基本规则:
必须缺一门才能胡牌(重点强调下,川麻的第一规则就是打缺,无条件打缺!),坚决抵制花猪,花猪无条件包还在场的麻友满庄!如果是打不封顶,可以事前规定一个数额,比如起步价的10倍等,然后再包赔牌面;
任何一对牌都可以做“将”(两个一样的牌)(不像有些地区必须是2、5、8做将)。
四川话中听牌叫“下窖”(或“下叫”),胡牌叫“割了/割牌”,可能是指收割了的意思。打牌过程中可碰、可杠,就是不能吃,除了胡牌的时候可“吃”。碰、杠后的牌要亮出牌面。
谁点炮谁负责,好汉做事好汉当。如果谁打出一张牌,被杠(对方手上之前有三个同样的牌,并且同上拿下来碰,就叫“杠”),再杠上花(即杠开),算引杠者点炮(这个规则是避免一些弊端,同时也能让那些技术好的、能避免引杠的高手无端受到伤害!)。一炮点两家以上,还是点炮的输钱,但点炮者为下一盘的庄家。自摸、杠上花,另外三家输。
特别注意一点,如果第一次某人引杠,对方没有杠开,但是杠起来的牌又可连续开杠(自杠),这次如果杠开了,就算在场的还没胡牌的所有人的了。
胡牌时有杠就加番,有一杠就加一番。
最后四张能胡必须胡(这样是避免有人得知场上有人没下窖,而恶意做大,造成还没下窖的人更大损失。因为有时候没下窖会被人说漏嘴,从这点看,如果你没下窖,你千万别暴露了,小心被人恶意做大做强收拾你。)。
黄庄要查窖。没有停牌的人赔给所有已经停牌者(已经胡牌的不算)按照现有牌面计算的最小规格的钱数(现实中往往是按最大规格算,这样鼓励停牌者停在最大的牌面上)。如果四家都没胡牌的黄庄,下一局的庄家为再上一局的庄家。
有刮风下雨(杠牌)。刮风(明杠):分“直杠”和“面下杠”。“直杠”就是玩家手中有三张一样的牌,当其他麻友打出了第四张一样的牌时,麻友选择的杠牌。直杠,立刻收取引杠者2倍点数,即2元。“面下杠”就是玩家已经碰了三张一样的牌时,玩家自己又摸到了第四张一样的牌,这时候选择的杠牌。面下杠,收取其他未胡者1倍点数,即1元(如果4家都在场,那么就一共能收到3元。)。下雨(暗杠):下雨指玩家持有了四张一样的牌(未碰),此时玩家可以选择从手中把牌拿出来杠牌。下雨立刻收取其他未胡者每人2倍点数,即2元。如果黄庄了,有杠牌的玩家还没有下窖,则必须退回全部刮风下雨所得,也就是说不到杠钱。
杠牌要顺着拿牌,不是从牌堆的最后拿,避免一些有意无意的作弊行为。
打牌时,在同一圈内,不能“弃先胡后”,也就是不能在同一圈里(你还没过过手)不胡第一个,去胡第二、三个牌友,但是加番可以胡,自摸可以胡。这是从江湖道义上考虑的。
两个倒霉蛋特例及其处理办法:
麻胡/诈胡:麻胡是什么?麻胡就是本来没有胡,却自己眼花了看错了以为胡了,并糊里糊涂地就胡了。对麻胡的惩罚,没有统一,一般是赔场上所有人的1番,并不再计算其刮风下雨收益。对于先于麻胡者胡牌的玩家,就不再赔了,因为这类人没有受到麻胡影响。
相公:就是开始出牌了,发现自己的牌少了(小相公)。小相公的造成绝大部分是起牌的时候忘记拿最后一张牌,或者杠牌的时候忘了摸起一张来。或者多了(大相公)。对相公的处罚,可参照对麻胡的惩罚,但对所有人都要进行赔付,因为无法确定相公者什么时候开始牌数不对的。当然,也可以放过相公者,只赔付黄庄后没胡牌的人,但最好这人下窖了。
算番、算钱规则如下:
◆1番:平胡(又叫屁胡),即缺一门,四坎牌加一对将,1元。如111万 444万 456筒 789万 对7筒。或如图:
◆2番:
(1)对对胡(又叫“大对子”、“对子胡”),即每坎牌都是三张一样的牌,2元。 例: 111万 444万 222筒
999筒对6筒。
(2)抢杠胡,即在他人杠时抢牌胡,2元。(抢杠只能抢明杠,不得抢暗杠。)
(3)屁胡牌型+一杠。如111万 123万 444万 999筒 对6筒,有四个1万。或如图:
(4)自摸。现在流行自摸加底,底就是一倍点数,底钱。
◆3番:
(1)清一色,即全副牌是一种花色,4元。例:123条 567条 234 条 888条 99条。或如图:
(2)幺九牌,即每坎牌都有一或九,4元。例:123条 123万 789条 789万 99万。
(3)七小对,即胡牌的时候是七对牌,4元。例:11万 22万 99万 44筒 66筒 88筒 99筒。或如图:
(4)其他如屁胡加两杠,也是3番;或者对对话加一杠,诸如此类。
◆4番:
(1)龙七对,即在七对的基础上,有两对牌是四张一样的,8元。注意:此四张牌并不是杠的牌。例:11万
11万 99万 44筒 66筒 88筒 99筒。在此基础上,有几龙就再加几番。
(2)清对,即一种花色的大对子,8元。例: 111万 444万 222万 999万 66万。或如图:
(当然,这个牌型可大了,清对8元,带三杠,再翻3番:8--&16--&32--&64元,再加上三个直杠共6元,共计70元了,还不知道抓了几家。极品了。)
(3)将对:即二、五、八的大对子,4元。例: 222万 555万 888万 222条 55筒。
(4)其他如屁股加三杠,或者对对话加两杠,诸如此类。
◆其他:
(1)天胡,即刚码好牌就自然成胡(可不兴此规则)。——这个牌型是麻坛中的百年难遇极致,一般人认为胡了此牌型,是达到了人生的巅峰,当金盆洗手退出江湖。基于此考虑,大家就不算钱了,当停止厮杀,让天胡者摆酒,压惊,永远退出麻坛,哈哈!
(2)地胡,即刚打第一张牌就成胡(可不兴此规则,我也认为地胡应该比天胡少一番才对。)——既然天胡都不算了,地胡也就算了,就当正常胡牌算,该几番就几番。
(3)清七对(清一色的七小对),又是清一色,又是七小对。清一色是3番了,4元,那再在七小对基础上再翻两下,即16元。如果带龙七对,有几龙,再翻几番。或如图:
再如下图,清七对再带三龙,我靠,这个是多大呢?清七对本身就是16元了,再带三龙,16--&32--&64--&128,牛逼死了。百年一遇。
(4)清幺九,清一色的幺九,如11 123 789 789
789筒。幺九是3番,清一色也是3番了,这个算法和清七对是一样的,也是16元。
注意:川麻中本没有一条龙之说!川麻中也没有连庄加番一说!本盘胡牌者为下一盘的庄家。切记。
◆另加番:
杠上花:1番,杠后自模胡牌(杠了之后补牌而胡)。另:有时候海底花多加一番(即杠上花是最后一张牌胡牌)
海底:最后一张牌胡牌的再加一番,不管这张牌是你自摸还是别人点炮。
1番,玩家在杠牌时,先杠一张牌,再打掉一张牌,而打出的这张牌正好时其他玩家胡牌所需要的叫牌时,这种情况叫杠上炮。即玩家杠了后补牌,打出,然后给其他玩家胡了。
抢杠:1番,玩家在补杠时(即面下杠),补杠的牌正好让其它玩家胡牌,叫抢杠。被人抢了杠是相当郁闷的,又要输钱,又杠不成,简直与抢杠者不共戴天。
杠:1番,四张同样的牌算1杠,胡牌时有1杠加1番。前面说过多次了。
◆刮风下雨(杠牌)的综合考虑:
&&&&&当你手上有三张一样的牌(不是碰出来的三张牌),如果有人打出第四张这样的牌,你是直杠,还是先碰了,待会再去玩面下杠,这里就涉及3个问题要考虑:
首先考虑你是碰牌好,还是去直杠,这要看你手上的牌型,会不会因为直杠后拆乱牌型,导致最后不便下窖或无法胡牌;
其次要考虑是否值得先碰牌,然后回头再面下杠,这样可以把收益最大化,因为如果其他三家都还在场,待会面下杠会把收益从2元变成3元。但是这样做有点不厚道,因为本来是引杠那家的事情,现在就转化到其他两家无辜者身上了;
第三要考虑如果先碰了,留下手上一张,等下窖以后,再不打乱牌型、始终保持停牌的情况下,去面下杠,这样就有杠上花的机会!但是,切记这时候要冷静,因为面下杠去争取杠上花的同时,同时面临他人抢杠的风险。
今天先修订到这里,这是互联网上被点击最多的一篇血战到底的规则与技巧文章,不信你可以百度一下试试,呵呵。喜欢本文,还可关注微博“”,以及微信公众号“最麻将”(zuimajiang),更多精彩内容在这里,推荐给大家。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。打成都麻将想赢,先看你这些牌打对没?
成都麻将实战100例实战第3例轮到自己出牌,该打哪张?这副图笔者发在微信上,多数牌友认为该打7万,这个答案对不对呢?我们来分析下:首先从感觉上看,应该在7万、4筒、7筒中选打一张。很明显,7筒比4筒要好,不可能打7筒。再比较7万和4筒,7万的靠张有5689万,4筒靠张仅有23筒(4筒与7筒有重叠的靠张56筒,不论打哪张,摸到56筒均可下叫,因此4筒的有效靠张为23筒),这样一来,该打哪张就一目了然了,看来大家的“感觉”不太灵哦。其实这手牌同案例2一样,也属于“四人抬轿”里有一对将和两张单牌的情况。比较每张单牌的靠张多少,再决定取舍。实战第4例轮到自己出牌,该打哪张?先对牌面进行分析,这手牌多了一个搭子,需要“拆张”。1344条属于“间张搭子靠对子”牌型,打1条不影响上2条,不丢张(参照“经典牌型处理”一节),故此处应该打1条,而不是拆1万。(精彩待续。。。。)作者:革命前夜(革命麻将馆 馆主)《从理论到实战:成都麻将技巧研究》是继《革命麻将50讲》之后,全新一本关于成都麻将经验及技巧分享的新书。全书涵盖理论和实战两部分。第一章为背景知识,介绍成都麻将的现行规则和计番方法,主要针对外地朋友和不会打麻将的人。第二章为麻将理论,主要是从概率、牌型、次序等方面剖析麻将的构成,研究孤张、靠张、多张、搭子、对子的特点,并理清它们的关系。这一章是本书的核心部分,也是革命麻将理论的精髓,重点是塑造一种思维,练就扎实的基本功。第三章选取一些典型的实战案例,用革命麻将理论进行解说,图文并茂,一目了然,指出打麻将的常见误区,帮助麻友培养正确的思维。
Ctrl+D&将本页面保存为书签,全面了解最新资讯,方便快捷。(回眸一笑)
第三方登录:

我要回帖

更多关于 打麻将怎么看骰子 的文章

 

随机推荐