题解 | #24点运算#
24点运算
https://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d
半成品,疯了
import re
def solution():
def dfs(nums,exp):
if not nums:
return False
if len(nums)==1:
if nums[0]==24:
return exp
else:
return False
for i,a in enumerate(nums):
for j,b in enumerate(nums):
if i!=j:
subnums = []
for k,c in enumerate(nums):
if k!=i and k!=j:
subnums.append(c)
for k in range(4):
temp = exp
if i>j and k<2:
continue
if k==0:
subnums.append(a+b)
exp += '{}+{}%'.format(a,b)
if k==1:
subnums.append(a*b)
exp += '{}*{}%'.format(a,b)
if k==2:
subnums.append(a-b)
exp += '{}-{}%'.format(a,b)
if k==3:
if b!=0:
subnums.append(a//b)
exp += '{}/{}%'.format(a,b)
else:
continue
if dfs(subnums,exp):
return dfs(subnums,exp)
subnums.pop()
exp = temp
return False
nums = list(input().split())
copys = nums.copy()
value = {'J':11,'Q':12,'K':13,'A':1}
if 'joker' in nums:
print('ERROR')
return
else:
for i in range(len(nums)):
if nums[i].isdigit():
nums[i] = int(nums[i])
else:
nums[i] = value[nums[i]]
maps2 = {'+'}
if dfs(nums,''):
exp = dfs(nums,'')
cell = exp.strip('%').split('%')
res = cell[-1]
ws = re.split('[+]|[*]|[-]|[/]',res)
if eval(cell[0])==eval(ws[0]):
res = res.replace(ws[0],'({})'.format(cell[0]))
elif eval(cell[0])==eval(ws[1]):
res = res.replace(ws[1],'({})'.format(cell[0]))
if eval(cell[1])==eval(ws[0]):
res = res.replace(ws[0],'({})'.format(cell[1]))
elif eval(cell[1])==eval(ws[1]):
res = res.replace(ws[1],'({})'.format(cell[1]))
if '13' in res:
res = res.replace('13','K')
if '12' in res:
res = res.replace('12','Q')
if '11' in res:
res = res.replace('11','J')
if '1' in res:
res = res.replace('1','A')
compare = ' '.join(re.split('[)]|[(]|[+]|[*]|[-]|[/]',res)).split()
if compare!=copys:
print('NONE')
else:
print(res)
else:
print('NONE')
solution()

正浩创新EcoFlow公司福利 490人发布