题解 | #24点运算#

24点运算

https://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d

import re

l = []


def fun(ls, s):
    if len(ls) == 1:
        l.append(s + "+" + ls[0])
        l.append(s + "-" + ls[0])
        l.append(s + "*" + ls[0])
        l.append(s + "//" + ls[0])
    for x in ls:
        l1 = ls[:]
        l1.remove(x)
        if s == "":
            fun(l1, s + x)
        else:
            fun(l1, s + "+" + x)
            fun(l1, s + "-" + x)
            fun(l1, s + "*" + x)
            fun(l1, s + "//" + x)


def eval1(s):
    dig=re.compile("\\d+")
    sym=re.compile("\\D+")
    digs=re.findall(dig,s)
    syms=re.findall(sym,s)
    t=int(digs[0])
    digs=digs[1:]
    for i in range(3):
        sym=syms[i]
        val=digs[i]
        if sym=="+":
            t+=int(val)
        elif sym=="-":
            t-=int(val)
        elif sym=="*":
            t*=int(val)
        elif sym=="//":
            t//=int(val)
    return t


def fun2(ls):
    for x in ls:
        s = x.replace("J", "11").replace("Q", "12").replace("K", "13").replace("A", "1")
        if eval1(s) == 24:
            return x.replace("//", "/")
    return "NONE"


ls = input().split()
if "joker" in ls or "JOKER" in ls:
    print("ERROR")
else:
    fun(ls, "")
    ls = list(set(l))
    print(fun2(ls))

全部评论

相关推荐

头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
10-15 09:13
已编辑
天津大学 soc前端设计
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务