Python题解 | #24点运算#

24点运算

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

import sys
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)
    for num in num_orders:
        for i in range(4):
            for j in range(4):
                for k in range(4):
                    a = cal(card_order[num[0]], card_order[num[1]], i)
                    b = cal(a, card_order[num[2]], j)
                    c = cal(b, card_order[num[3]], k)
                    if c == 24:
                        print(f"{num[0]}{opts[i]}{num[1]}{opts[j]}{num[2]}{opts[k]}{num[3]}")
                        return
    print('NONE')
    return


while True:
    try:
        cards = input().split(' ')
        cal24(cards)



    except:
        break

全部评论
利用全排列permutations函数对输入进行全排列,每个输入的值和运算符排列组合,得到结果即可马上输出答案,如果全排列都没有则输出NONE
点赞 回复 分享
发布于 2024-05-18 16:43 上海

相关推荐

ResourceUtilization:差不多但是估计不够准确,一面没考虑到增长人口,另一方面也没考虑到能上大学的人数比例,不过我猜肯定只多不少
点赞 评论 收藏
分享
05-20 13:59
门头沟学院 Java
米黑子米黑子:你这个成绩不争取下保研?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务