题解 | #24点运算# 简洁版,一看就会

24点运算

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

from itertools import permutations

card = ['A','2','3','4','5','6','7','8','9','10','J','Q','K']
order = range(1,14)
card_order = dict(zip(card,order))
opts = ["+", "-", "*", "/"]

def cal(a1,a2,opt):
    if opt == 0: return a1+a2
    elif opt == 1: return a1-a2
    elif opt == 2: return a1*a2
    elif opt == 3: return a1/a2

def cal24(cards):
    if "joker" in cards or "JOKER" in cards:
        print("ERROR")
        return
    num_orders = permutations(cards, 4)
    for nums in num_orders:
        for i in range(4):
            a = cal(card_order[nums[0]], card_order[nums[1]], i)
            for j in range(4):
                b = cal(a, card_order[nums[2]], j)
                for k in range(4):
                    c = cal(b, card_order[nums[3]], k)
                    if c == 24:
                        print("%s%s%s%s%s%s%s"%(nums[0],opts[i],nums[1],opts[j],nums[2],opts[k],nums[3]))
                        return
    print("NONE")
    return

cards = input().split()
cal24(cards)
全部评论
是呀,虽然是穷举法,但是已经很厉害了,顺便学习一下 dict(zip(a,b))函数 和 permutation(a,number)函数。
6 回复 分享
发布于 2022-03-20 14:40
还得是你啊,不花里胡哨,完美
2 回复 分享
发布于 2023-04-11 23:25 江苏
这个for循环套的6啊
1 回复 分享
发布于 2021-09-06 22:15
大佬啊,太强了
点赞 回复 分享
发布于 2022-09-27 00:47 广东
太nb了
点赞 回复 分享
发布于 2023-11-01 19:49 浙江
elif opt == 3: return a1/a2 不是说整除吗? 整除反而有个用例不过
点赞 回复 分享
发布于 2023-11-14 00:21 上海
我的用例怎么回事,4 2 K A预期输出K-A*4/2。这是13-1*4/2的意思吗?这是24?? K Q 6 K预期输出NONE。我K-Q/6+K不行吗? A K J 8预期输出A+K-J*8 Q 3 J 8预期输出Q-J*3*8
点赞 回复 分享
发布于 2024-09-19 11:26 广东

相关推荐

评论
28
11
分享

创作者周榜

更多
牛客网
牛客企业服务