7-25 用撲克牌計算24點(diǎn) (25 分)
一副撲克牌的每張牌表示一個數(shù)(J、Q、K 分別表示 11、12、13,兩個司令都表示 6)。任取4 張牌,即得到 4 個 1~13 的數(shù),請?zhí)砑舆\(yùn)算符(規(guī)定為加+ 減- 乘* 除/ 四種)使之成為一個運(yùn)算式。每個數(shù)只能參與一次運(yùn)算,4 個數(shù)順序可以任意組合,4 個運(yùn)算符任意取 3 個且可以重復(fù)取。運(yùn)算遵從一定優(yōu)先級別,可加括號控制,最終使運(yùn)算結(jié)果為 24。請輸出一種解決方案的表達(dá)式,用括號表示運(yùn)算優(yōu)先。如果沒有一種解決方案,則輸出 -1 表示無解。
輸入格式:
輸入在一行中給出 4 個整數(shù),每個整數(shù)取值在 [1, 13]。
輸出格式:
輸出任一種解決方案的表達(dá)式,用括號表示運(yùn)算優(yōu)先。如果沒有解決方案,請輸出 -1。
輸入樣例:
2 3 12 12
輸出樣例:
((3-2)*12)+12
代碼如下文章來源:http://www.zghlxwxcb.cn/news/detail-401151.html
a,b,c,d=map(int,input().split())
list1 = [a, b, c, d]
list2 = []
list3 = []
symbols = ["+", "-", "*", "/"]
class FindException(Exception):
? ? pass
try:
? ? for i in range(4):
? ? ? ? one = list1[i]
? ? ? ? list2 = list1[0:i] + list1[i + 1:]
? ? ? ? for j in range(3):
? ? ? ? ? ? two = list2[j]
? ? ? ? ? ? list3 = list2[0:j] + list2[j + 1:]
? ? ? ? ? ? for k in range(2):
? ? ? ? ? ? ? ? three = list3[k]
? ? ? ? ? ? ? ? four = (list3[0:k] + list3[k + 1:])[0]
? ? ? ? ? ? ? ? for s1 in symbols:
? ? ? ? ? ? ? ? ? ? for s2 in symbols:
? ? ? ? ? ? ? ? ? ? ? ? for s3 in symbols:
? ? ? ? ? ? ? ? ? ? ? ? ? ? express = "((one{0}two){1}three){2}four".format(s1, s2, s3)
? ? ? ? ? ? ? ? ? ? ? ? ? ? if eval(express) == 24:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print("(({0}{1}{2}){3}{4}){5}{6} ".format(one, s1, two, s2, three, s3, four))
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? raise FindException
? ? print("-1")
except FindException:
? ? pass
?文章來源地址http://www.zghlxwxcb.cn/news/detail-401151.html
到了這里,關(guān)于python用撲克牌計算24點(diǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!