def
num_to_card
(num)
:"""
:param num: 代表麻將牌的整數
:return: 麻將牌
"""wan =
['%d萬'
% i for i in
range(1
,10)]
tong =
['%d筒'
% i for i in
range(1
,10)]
tao =
['%d條'
% i for i in
range(1
,10)]
fen =
['東風'
,'南風'
,'西風'
,'北風'
] zi =
['發財'
,'白板'
,'中'
] mj_dict =
if num//
16in[1
,2,3
,4,5
]:return mj_dict.get(num//16)
else
: flag =
1return
'癩子'
deflst_mj
(lst)
:"""
:param lst: 乙個包含14個整數的按照從小到大排列的有序列表
:return: 滿足小七對福牌輸出福牌麻將牌列表,不滿足輸出0
"""flag =
0 res =
index1 =
0 r =
len(lst)-1
lz =
10000
while index1 <= r and
not flag:
if lst[index1]
!= lst[index1 +1]
: pack = num_to_card(lst[index1]
) index1 = index1+
1if lst[r]
== lz:
r = r -
1 pack = pack +
'(癩子)'
else
: flag =
1else
:if lst[index1]
!= lz:
pack = num_to_card(lst[index1]
)else
: pack = num_to_card(lst[index1]
) flag =
0 index1 = index1 +
2if flag ==0:
return res
else
:return
0if __name__ ==
'__main__'
: text_samples =
[# no.1: false 4個對子, 4個單牌,2個癩子
[0x11
,0x11
,0x21
,0x22
,0x22
,0x34
,0x34
,0x35
,0x35
,0x36
,0x37
,0x38
,10000
,10000],
# no.2: true 4個對子, 2個單牌,4個癩子
[0x11
,0x11
,0x21
,0x22
,0x22
,0x34
,0x34
,0x35
,0x35
,0x36
,10000
,10000
,10000
,10000],
# no.3: true 14個癩子
[10000
,10000
,10000
,10000
,10000
,10000
,10000
,10000
,10000
,10000
,10000
,10000
,10000
,10000],
# no.4: false 4個對子,1個刻子,2個單牌,1個癩子
[0x11
,0x11
,0x21
,0x21
,0x22
,0x22
,0x22
,0x34
,0x34
,0x35
,0x36
,0x44
,0x44
,10000],
# no.5: true 2個槓,1個刻子,1個對子,1個癩子
[0x11
,0x11
,0x11
,0x11
,0x22
,0x22
,0x22
,0x22
,0x34
,0x34
,0x34
,0x47
,0x47
,10000],
# no.6: false 2個對子, 2個刻子, 2張單牌, 2個癩子
[0x11
,0x11
,0x11
,0x22
,0x34
,0x34
,0x34
,0x35
,0x36
,0x36
,0x54
,0x54
,10000
,10000],
# no.7: false 9個單牌, 5個癩子
[0x12
,0x13
,0x14
,0x15
,0x16
,0x17
,0x18
,0x19
,0x20
,0x10000
,10000
,10000
,10000
,10000]]
print
("***測試結果如下,滿足小七對輸出福牌列表,不滿足輸出0***"
)for sample in text_samples:
card_list = lst_mj(sample)
print
('no.%d: '
%(text_samples.index(sample)+1
), card_list)
麻將胡牌演算法
majiang algorithm是帶多張鬼牌的通用胡牌演算法,採用查表方式,簡單高效。在生成表的階段,時間是不值錢的,所以生成方法我們可以任意窮舉。首先分為普通 風 箭三張表。窮舉出所有的key,比如普通表,就是000000000 444420000,因為每一種牌最大4張,且總和不超過14張牌。對...
麻將胡牌演算法 C
這裡只介紹普通的麻將胡牌演算法,也就是7個對子或者 1個對子 3 n n 三個順子或者三個一樣的 其中字牌 東南西北中發白 不能算順子。首先對於每張牌 它有牌的的數字 1 9,牌的種類 萬條筒以及字 所以先封裝乙個牌的包裝類。如果要和伺服器互動的話就應該給這個類序列化 即加上system.seria...
麻將胡牌判決
胡牌有以下幾種情況 1 乙個對子 4組 3個相同的牌或者順子。只有m s p是可以構成順子的。東西南北這樣的牌沒有順子。2 7個不同的對子。3 1m,9m,1p,9p,1s,9s,1c,2c,3c,4c,5c,6c,7c.這13種牌每種都有,而且僅有這13種牌。肯定是有一種2張。其他的1張。首先是列...