Java教程

24点算法

本文主要是介绍24点算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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点算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!