24点运算

24点运算

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

参考了高赞答案中函数的用法

python使用itertools.permutations给出全排列,用eval计算字符串表示的算式值

  1. 将四个输入的数字全排列,共有4!= 24种情况
  2. 四个数中间有三个运算符,每个运算符有4种可能,共种可能情况
    需要遍历种情况。每种情况的运算顺序为:从左至右依次计算。比如:图片说明
import itertools

def tf():
    while True:
        try:
            val_dict = {'A':'1','J':'11','Q':'12','K':'13'}
            mapOp={'0':'+','1':'-','2':'*','3':'/'}  
            s = input().split()
            for i in s:
                if (i == 'joker') or (i == 'JOKER'):
                    print("ERROR")
                    return
            new_s = []
            for d in s:
                if d in val_dict:
                    new_s = new_s + [val_dict[d]]
                else:
                    new_s = new_s + [d]
            for val in itertools.permutations(range(4),4):
                for i1,i2,i3 in itertools.product(map(str,range(4)),repeat=3):
                    tems = '(('+new_s[val[0]]+mapOp[i1]+new_s[val[1]]+')'+mapOp[i2]+new_s[val[2]]+')'+mapOp[i3]+new_s[val[3]]
                    if eval(tems)==24:
                        outs = s[val[0]]+mapOp[i1]+s[val[1]]+mapOp[i2]+s[val[2]]+mapOp[i3]+s[val[3]]
                        print(outs)
                        return
            print("NONE")
        except:
            break

if __name__=='__main__':
    tf()
全部评论
是4!*4^3种情况
点赞 回复 分享
发布于 2020-09-20 12:38

相关推荐

牛客868257804号:九个中铁八个中建
点赞 评论 收藏
分享
牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务