import itertools
def twentyfour(cards):
'''史上最短计算24点代码'''
for nums in itertools.permutations(cards): # 四个数,全排列
# product(A,repeat = 2) ==product(A,A)==A和A中所有的数据进行组合
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函数
return bds
except ZeroDivisionError: # 零除错误!
continue
return 'Not found!'
# 测试
cards = [[1, 1, 1, 8],
[1, 1, 2, 6],
[1, 1, 2, 7],
[1, 1, 2, 8],
[1, 1, 2, 9],
[1, 1, 2, 10],
[1, 1, 3, 4],
[1, 1, 3, 5],
[1, 1, 3, 6],
[1, 1, 3, 7],
[1, 1, 3, 8],
[1, 1, 3, 9],
[1, 1, 3, 10],
[1, 1, 4, 4],
[1, 1, 4, 5],
[1, 1, 4, 6],
[1, 1, 4, 7],
[1, 1, 4, 8],
[1, 1, 4, 9],
[1, 1, 4, 10],
[1, 1, 5, 5],
[1, 1, 5, 6],
[1, 1, 5, 7],
[1, 1, 5, 8],
[1, 1, 6, 6],
[1, 1, 6, 8],
[1, 1, 6, 9],
[1, 1, 7, 10],
[1, 1, 8, 8],
[1, 2, 2, 4],
[1, 2, 2, 5],
[1, 2, 2, 6],
[1, 2, 2, 7],
[1, 2, 2, 8],
[1, 2, 2, 9],
[1, 2, 2, 10],
[1, 2, 3, 3],
[1, 2, 3, 4],
[1, 2, 3, 5],
[1, 2, 3, 6],
[1, 2, 3, 7],
[1, 2, 3, 8],
[1, 2, 3, 9],
[1, 2, 3, 10],
[1, 2, 4, 4],
[1, 2, 4, 5],
[1, 2, 4, 6],
[1, 2, 4, 7],
[1, 2, 4, 8],
[1, 2, 4, 9],
[1, 2, 4, 10],
[1, 2, 5, 5],
[1, 2, 5, 6],
[1, 2, 5, 7],
[1, 2, 5, 8],
[1, 2, 5, 9],
[1, 2, 5, 10],
[1, 2, 6, 6],
[1, 2, 6, 7],
[1, 2, 6, 8],
[1, 2, 6, 9],
[1, 2, 6, 10],
[1, 2, 7, 7],
[1, 2, 7, 8],
[1, 2, 7, 9],
[1, 2, 7, 10],
[1, 2, 8, 8],
[1, 2, 8, 9],
[1, 2, 8, 10],
[1, 3, 3, 3],
[1, 3, 3, 4],
[1, 3, 3, 5],
[1, 3, 3, 6],
[1, 3, 3, 7],
[1, 3, 3, 8],
[1, 3, 3, 9],
[1, 3, 3, 10],
[1, 3, 4, 4],
[1, 3, 4, 5],
[1, 3, 4, 6],
[1, 3, 4, 7],
[1, 3, 4, 8],
[1, 3, 4, 9],
[1, 3, 4, 10],
[1, 3, 5, 6],
[1, 3, 5, 7],
[1, 3, 5, 8],
[1, 3, 5, 9],
[1, 3, 5, 10],
[1, 3, 6, 6],
[1, 3, 6, 7],
[1, 3, 6, 8],
[1, 3, 6, 9],
[1, 3, 6, 10],
[1, 3, 7, 7],
[1, 3, 7, 8],
[1, 3, 7, 9],
[1, 3, 7, 10],
[1, 3, 8, 8],
[1, 3, 8, 9],
[1, 3, 8, 10],
[1, 3, 9, 9],
[1, 3, 9, 10],
[1, 3, 10, 10],
[1, 4, 4, 4],
[1, 4, 4, 5],
[1, 4, 4, 6],
[1, 4, 4, 7],
[1, 4, 4, 8],
[1, 4, 4, 9],
[1, 4, 4, 10],
[1, 4, 5, 5],
[1, 4, 5, 6],
[1, 4, 5, 7],
[1, 4, 5, 8],
[1, 4, 5, 9],
[1, 4, 5, 10],
[1, 4, 6, 6],
[1, 4, 6, 7],
[1, 4, 6, 8],
[1, 4, 6, 9],
[1, 4, 6, 10],
[1, 4, 7, 7],
[1, 4, 7, 8],
[1, 4, 7, 9],
[1, 4, 8, 8],
[1, 4, 8, 9],
[1, 4, 9, 10],
[1, 4, 10, 10],
[1, 5, 5, 5],
[1, 5, 5, 6],
[1, 5, 5, 9],
[1, 5, 5, 10],
[1, 5, 6, 6],
[1, 5, 6, 7],
[1, 5, 6, 8],
[1, 5, 6, 9],
[1, 5, 6, 10],
[1, 5, 7, 8],
[1, 5, 7, 9],
[1, 5, 7, 10],
[1, 5, 8, 8],
[1, 5, 8, 9],
[1, 5, 8, 10],
[1, 5, 9, 9],
[1, 5, 9, 10],
[1, 5, 10, 10],
[1, 6, 6, 6],
[1, 6, 6, 8],
[1, 6, 6, 9],
[1, 6, 6, 10],
[1, 6, 7, 9],
[1, 6, 7, 10],
[1, 6, 8, 8],
[1, 6, 8, 9],
[1, 6, 8, 10],
[1, 6, 9, 9],
[1, 6, 9, 10],
[1, 7, 7, 9],
[1, 7, 7, 10],
[1, 7, 8, 8],
[1, 7, 8, 9],
[1, 7, 8, 10],
[1, 7, 9, 9],
[1, 7, 9, 10],
[1, 8, 8, 8],
[1, 8, 8, 9],
[1, 8, 8, 10],
[2, 2, 2, 3],
[2, 2, 2, 4],
[2, 2, 2, 5],
[2, 2, 2, 7],
[2, 2, 2, 8],
[2, 2, 2, 9],
[2, 2, 2, 10],
[2, 2, 3, 3],
[2, 2, 3, 4],
[2, 2, 3, 5],
[2, 2, 3, 6],
[2, 2, 3, 7],
[2, 2, 3, 8],
[2, 2, 3, 9],
[2, 2, 3, 10],
[2, 2, 4, 4],
[2, 2, 4, 5],
[2, 2, 4, 6],
[2, 2, 4, 7],
[2, 2, 4, 8],
[2, 2, 4, 9],
[2, 2, 4, 10],
[2, 2, 5, 5],
[2, 2, 5, 6],
[2, 2, 5, 7],
[2, 2, 5, 8],
[2, 2, 5, 9],
[2, 2, 5, 10],
[2, 2, 6, 6],
[2, 2, 6, 7],
[2, 2, 6, 8],
[2, 2, 6, 9],
[2, 2, 6, 10],
[2, 2, 7, 7],
[2, 2, 7, 8],
[2, 2, 7, 10],
[2, 2, 8, 8],
[2, 2, 8, 9],
[2, 2, 8, 10],
[2, 2, 9, 10],
[2, 2, 10, 10],
[2, 3, 3, 3],
[2, 3, 3, 5],
[2, 3, 3, 6],
[2, 3, 3, 7],
[2, 3, 3, 8],
[2, 3, 3, 9],
[2, 3, 3, 10],
[2, 3, 4, 4],
[2, 3, 4, 5],
[2, 3, 4, 6],
[2, 3, 4, 7],
[2, 3, 4, 8],
[2, 3, 4, 9],
[2, 3, 4, 10],
[2, 3, 5, 5],
[2, 3, 5, 6],
[2, 3, 5, 7],
[2, 3, 5, 8],
[2, 3, 5, 9],
[2, 3, 5, 10],
[2, 3, 6, 6],
[2, 3, 6, 7],
[2, 3, 6, 8],
[2, 3, 6, 9],
[2, 3, 6, 10],
[2, 3, 7, 7],
[2, 3, 7, 8],
[2, 3, 7, 9],
[2, 3, 7, 10],
[2, 3, 8, 8],
[2, 3, 8, 9],
[2, 3, 8, 10],
[2, 3, 9, 9],
[2, 3, 9, 10],
[2, 3, 10, 10],
[2, 4, 4, 4],
[2, 4, 4, 5],
[2, 4, 4, 6],
[2, 4, 4, 7],
[2, 4, 4, 8],
[2, 4, 4, 9],
[2, 4, 4, 10],
[2, 4, 5, 5],
[2, 4, 5, 6],
[2, 4, 5, 7],
[2, 4, 5, 8],
[2, 4, 5, 9],
[2, 4, 5, 10],
[2, 4, 6, 6],
[2, 4, 6, 7],
[2, 4, 6, 8],
[2, 4, 6, 9],
[2, 4, 6, 10],
[2, 4, 7, 7],
[2, 4, 7, 8],
[2, 4, 7, 9],
[2, 4, 7, 10],
[2, 4, 8, 8],
[2, 4, 8, 9],
[2, 4, 8, 10],
[2, 4, 9, 9],
[2, 4, 9, 10],
[2, 4, 10, 10],
[2, 5, 5, 7],
[2, 5, 5, 8],
[2, 5, 5, 9],
[2, 5, 5, 10],
[2, 5, 6, 6],
[2, 5, 6, 7],
[2, 5, 6, 8],
[2, 5, 6, 9],
[2, 5, 6, 10],
[2, 5, 7, 7],
[2, 5, 7, 8],
[2, 5, 7, 9],
[2, 5, 7, 10],
[2, 5, 8, 8],
[2, 5, 8, 9],
[2, 5, 8, 10],
[2, 5, 9, 10],
[2, 5, 10, 10],
[2, 6, 6, 6],
[2, 6, 6, 7],
[2, 6, 6, 8],
[2, 6, 6, 9],
[2, 6, 6, 10],
[2, 6, 7, 8],
[2, 6, 7, 9],
[2, 6, 7, 10],
[2, 6, 8, 8],
[2, 6, 8, 9],
[2, 6, 8, 10],
[2, 6, 9, 9],
[2, 6, 9, 10],
[2, 6, 10, 10],
[2, 7, 7, 8],
[2, 7, 7, 10],
[2, 7, 8, 8],
[2, 7, 8, 9],
[2, 7, 9, 10],
[2, 7, 10, 10],
[2, 8, 8, 8],
[2, 8, 8, 9],
[2, 8, 8, 10],
[2, 8, 9, 9],
[2, 8, 9, 10],
[2, 8, 10, 10],
[2, 9, 10, 10],
[3, 3, 3, 3],
[3, 3, 3, 4],
[3, 3, 3, 5],
[3, 3, 3, 6],
[3, 3, 3, 7],
[3, 3, 3, 8],
[3, 3, 3, 9],
[3, 3, 3, 10],
[3, 3, 4, 4],
[3, 3, 4, 5],
[3, 3, 4, 6],
[3, 3, 4, 7],
[3, 3, 4, 8],
[3, 3, 4, 9],
[3, 3, 5, 5],
[3, 3, 5, 6],
[3, 3, 5, 7],
[3, 3, 5, 9],
[3, 3, 5, 10],
[3, 3, 6, 6],
[3, 3, 6, 7],
[3, 3, 6, 8],
[3, 3, 6, 9],
[3, 3, 6, 10],
[3, 3, 7, 7],
[3, 3, 7, 8],
[3, 3, 7, 9],
[3, 3, 8, 8],
[3, 3, 8, 9],
[3, 3, 8, 10],
[3, 3, 9, 9],
[3, 3, 9, 10],
[3, 4, 4, 4],
[3, 4, 4, 5],
[3, 4, 4, 6],
[3, 4, 4, 7],
[3, 4, 4, 8],
[3, 4, 4, 9],
[3, 4, 4, 10],
[3, 4, 5, 5],
[3, 4, 5, 6],
[3, 4, 5, 7],
[3, 4, 5, 8],
[3, 4, 5, 9],
[3, 4, 5, 10],
[3, 4, 6, 6],
[3, 4, 6, 8],
[3, 4, 6, 9],
[3, 4, 6, 10],
[3, 4, 7, 7],
[3, 4, 7, 8],
[3, 4, 7, 9],
[3, 4, 7, 10],
[3, 4, 8, 9],
[3, 4, 8, 10],
[3, 4, 9, 9],
[3, 4, 10, 10],
[3, 5, 5, 6],
[3, 5, 5, 7],
[3, 5, 5, 8],
[3, 5, 5, 9],
[3, 5, 6, 6],
[3, 5, 6, 7],
[3, 5, 6, 8],
[3, 5, 6, 9],
[3, 5, 6, 10],
[3, 5, 7, 8],
[3, 5, 7, 9],
[3, 5, 7, 10],
[3, 5, 8, 8],
[3, 5, 8, 9],
[3, 5, 9, 9],
[3, 5, 9, 10],
[3, 5, 10, 10],
[3, 6, 6, 6],
[3, 6, 6, 7],
[3, 6, 6, 8],
[3, 6, 6, 9],
[3, 6, 6, 10],
[3, 6, 7, 7],
[3, 6, 7, 8],
[3, 6, 7, 9],
[3, 6, 7, 10],
[3, 6, 8, 8],
[3, 6, 8, 9],
[3, 6, 8, 10],
[3, 6, 9, 9],
[3, 6, 9, 10],
[3, 6, 10, 10],
[3, 7, 7, 7],
[3, 7, 7, 8],
[3, 7, 7, 9],
[3, 7, 7, 10],
[3, 7, 8, 8],
[3, 7, 8, 9],
[3, 7, 9, 9],
[3, 7, 9, 10],
[3, 7, 10, 10],
[3, 8, 8, 8],
[3, 8, 8, 9],
[3, 8, 8, 10],
[3, 8, 9, 9],
[3, 8, 9, 10],
[3, 8, 10, 10],
[3, 9, 9, 9],
[3, 9, 9, 10],
[3, 9, 10, 10],
[4, 4, 4, 4],
[4, 4, 4, 5],
[4, 4, 4, 6],
[4, 4, 4, 7],
[4, 4, 4, 8],
[4, 4, 4, 9],
[4, 4, 4, 10],
[4, 4, 5, 5],
[4, 4, 5, 6],
[4, 4, 5, 7],
[4, 4, 5, 8],
[4, 4, 5, 10],
[4, 4, 6, 8],
[4, 4, 6, 9],
[4, 4, 6, 10],
[4, 4, 7, 7],
[4, 4, 7, 8],
[4, 4, 7, 9],
[4, 4, 7, 10],
[4, 4, 8, 8],
[4, 4, 8, 9],
[4, 4, 8, 10],
[4, 4, 10, 10],
[4, 5, 5, 5],
[4, 5, 5, 6],
[4, 5, 5, 7],
[4, 5, 5, 8],
[4, 5, 5, 9],
[4, 5, 5, 10],
[4, 5, 6, 6],
[4, 5, 6, 7],
[4, 5, 6, 8],
[4, 5, 6, 9],
[4, 5, 6, 10],
[4, 5, 7, 7],
[4, 5, 7, 8],
[4, 5, 7, 9],
[4, 5, 7, 10],
[4, 5, 8, 8],
[4, 5, 8, 9],
[4, 5, 8, 10],
[4, 5, 9, 9],
[4, 5, 9, 10],
[4, 5, 10, 10],
[4, 6, 6, 6],
[4, 6, 6, 7],
[4, 6, 6, 8],
[4, 6, 6, 9],
[4, 6, 6, 10],
[4, 6, 7, 7],
[4, 6, 7, 8],
[4, 6, 7, 9],
[4, 6, 7, 10],
[4, 6, 8, 8],
[4, 6, 8, 9],
[4, 6, 8, 10],
[4, 6, 9, 9],
[4, 6, 9, 10],
[4, 6, 10, 10],
[4, 7, 7, 7],
[4, 7, 7, 8],
[4, 7, 8, 8],
[4, 7, 8, 9],
[4, 7, 8, 10],
[4, 7, 9, 9],
[4, 7, 9, 10],
[4, 7, 10, 10],
[4, 8, 8, 8],
[4, 8, 8, 9],
[4, 8, 8, 10],
[4, 8, 9, 9],
[4, 8, 9, 10],
[4, 8, 10, 10],
[4, 9, 9, 10],
[5, 5, 5, 5],
[5, 5, 5, 6],
[5, 5, 5, 9],
[5, 5, 6, 6],
[5, 5, 6, 7],
[5, 5, 6, 8],
[5, 5, 7, 7],
[5, 5, 7, 8],
[5, 5, 7, 10],
[5, 5, 8, 8],
[5, 5, 8, 9],
[5, 5, 8, 10],
[5, 5, 9, 9],
[5, 5, 9, 10],
[5, 5, 10, 10],
[5, 6, 6, 6],
[5, 6, 6, 7],
[5, 6, 6, 8],
[5, 6, 6, 9],
[5, 6, 6, 10],
[5, 6, 7, 7],
[5, 6, 7, 8],
[5, 6, 7, 9],
[5, 6, 8, 8],
[5, 6, 8, 9],
[5, 6, 8, 10],
[5, 6, 9, 9],
[5, 6, 9, 10],
[5, 6, 10, 10],
[5, 7, 7, 9],
[5, 7, 7, 10],
[5, 7, 8, 8],
[5, 7, 8, 9],
[5, 7, 8, 10],
[5, 7, 9, 10],
[5, 7, 10, 10],
[5, 8, 8, 8],
[5, 8, 8, 9],
[5, 8, 8, 10],
[5, 9, 10, 10],
[6, 6, 6, 6],
[6, 6, 6, 8],
[6, 6, 6, 9],
[6, 6, 6, 10],
[6, 6, 7, 9],
[6, 6, 7, 10],
[6, 6, 8, 8],
[6, 6, 8, 9],
[6, 6, 8, 10],
[6, 6, 9, 10],
[6, 7, 7, 10],
[6, 7, 8, 9],
[6, 7, 8, 10],
[6, 7, 9, 9],
[6, 7, 10, 10],
[6, 8, 8, 8],
[6, 8, 8, 9],
[6, 8, 8, 10],
[6, 8, 9, 9],
[6, 8, 9, 10],
[6, 9, 9, 10],
[6, 10, 10, 10],
[7, 7, 9, 10],
[7, 8, 8, 9],
[7, 8, 8, 10],
[7, 8, 9, 10],
[7, 8, 10, 10],
[8, 8, 8, 10]]
for card in cards:
print(twentyfour(card))
Python算法-枚举法解决24点问题
猜你喜欢
转载自blog.csdn.net/weixin_40539952/article/details/104192536
今日推荐
周排行