玩法可能有問題,主要是不清楚預留牌時輸入Ace和“Ace Ace”有什麽區別,是壹次性輸入Ace保留所有Ace還是只保留壹個Ace。這個不清楚。看例子,兩種用法都有,我根據輸入保留了幾個。
模擬沒問題,和圖中的結果壹模壹樣。
必須用Python 3。
進口?隨意
進口?收集
_dice_type?=?【‘王牌’,?‘國王’,?女王?傑克嗎?'10',?'9']
_手繪圖?=?收藏。ordered direct([
(‘5 kind’,‘五?的?答?善良’),
(‘4 kind’,‘四?的?答?善良’),
(‘滿’,?滿了?房子’),
(‘直’,?直男),
(‘3 kind’,‘三?的?答?善良’),
(‘2 pair’,‘二?對’),
(' 1pair ','壹?對’),
(‘半身像’,?半身像’),
])
def?_check_hand(骰子):
櫃臺?=?收藏。計數器(骰子)
如果?len(計數器)?==?1:
回歸?5分鐘
sorted5?=?counter.most_common(5)
如果?sorted5[0][1]?==?4:
回歸?4kind
如果?sorted5[0][1]?==?3:
如果?sorted5[1][1]?==?2:
回歸?'滿'
否則:
回歸?3kind
如果?sorted5[0][1]?==?2:
如果?sorted5[1][1]?==?2:
回歸?2對
否則:
回歸?' 1對'
如果?len(計數器)?==?5:
dtype?=?已排序5[0][0]
為了什麽?x?在?排序5:
如果?dtype?!=?x[0]:
破裂
dtype?+=?1
否則:
回歸?直的
回歸?半身像
def?播放():
骰子?=?[]
重試?=?0
什麽時候?真實:
保持?=?5?-?len(骰子)
如果?保持?& lt=?0:
破裂
dices.extend([random.randint(0,5)?為了什麽?x?在?範圍(保持)])
print("The?滾?就是:?{}".格式(
"?"。join([_dice_type[d]?為了什麽?d?在?已排序(骰子)])
))
print("它?是嗎?答?{}".格式(_hand_mapping[_check_hand(骰子)])
如果?重試?& gt?1:
破裂
提示?=?“哪個?骰子?做什麽?妳呢。想要嗎?去哪?保持?為了什麽?那個?{}?滾?”。格式(
“第二”?如果?重試?==?0?不然呢?“第三”
)
什麽時候?真實:
回答?=?輸入(提示)。下部()
如果?回答?==?所有':
破裂
回答?=?[x . capital()?為了什麽?x?在?answer.split()]
如果?設置(回答)。issubset(set(_dice_type)):
破裂
打印(“那個?是嗎?不是嗎?可能嗎?試試?又來了!”)
重試?+=?1
如果?回答?==?所有':
打印(“好的,?完成”)
破裂
tmp?=?骰子
骰子?=?[]
為了什麽?x?在?tmp:
如果?_dice_type[x]?在?回答:
骰子.追加(x)
answer.remove(_dice_type[x])
def?模擬(n,?debug=False):
結果?=?dict . from keys(_ hand _ mapping . keys(),?0)
為了什麽?_?在?範圍(n):
骰子?=?【random.randint(0,5)?為了什麽?x?在?範圍(5)]
如果?調試:
print("DEBUG:",?"?"。join([_dice_type[d]?為了什麽?d?在?已排序(骰子)])
結果[_check_hand(骰子)]?+=?1
為了什麽?k,?v?在?_hand_mapping.items():
cnt?=?結果[k]
打印(" {:& lt;16s}:?{:.2f}%"。格式(v,?100 *計數/n))