首页 > 编程语言 > 详细

24点算法

时间:2021-08-01 22:32:19      阅读:19      评论:0      收藏:0      [点我收藏+]
import itertools
def twentyfour(cards):
    ‘‘‘史上最短计算24点代码‘‘‘
    results = []
    for nums in itertools.permutations(cards):  # 四个数
        for ops in itertools.product(‘+-*/‘, repeat=3):  # 三个运算符(可重复!)
            # 构造三种中缀表达式 (bsd)
            bds1 = ‘({0}{4}{1}){5}({2}{6}{3})‘.format(*nums, *ops)  # (a+b)*(c-d)
            bds2 = ‘(({0}{4}{1}){5}{2}){6}{3}‘.format(*nums, *ops)  # (a+b)*c-d
            bds3 = ‘{0}{4}({1}{5}({2}{6}{3}))‘.format(*nums, *ops)  # a/(b-(c/d))

            for bds in [bds1, bds2, bds3]:  # 遍历
                try:
                    if abs(eval(bds) - 24.0) < 1e-10:  # eval函数
                        results.append(bds)
                except ZeroDivisionError:  # 零除错误!
                    continue
    return results

cards = [4,3,13,13]
print(twentyfour(cards))

  

24点算法

原文:https://www.cnblogs.com/pythonClub/p/15087561.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!