Python实现1-9数组形成的结果为100的所有运算式的示例
发布时间:2020-05-24 15:54:30 所属栏目:Python 来源:互联网
导读:问题:编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1+2+34C5+67C8+9=100。
|
问题: 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34C5 + 67C8 + 9 = 100。
from functools import reduce
operator = {
1: '+',2: '-',0: ''
}
base = ['1','2','3','4','5','6','7','8','9']
def isHundred(num):
#转化为8位3进制数,得到运算符数组
arr = []
for index in range(8):
index = 7 - index
arr.append(num // (3 ** index))
num -= (num // (3 ** index)) * (3 ** index)
arr = map(lambda x: operator[x],arr)
#合并得到运算式
formula = reduce(lambda x,y: x + y,zip(base,arr))
formula = list(formula)
formula.append('9')
formula = ''.join(formula)
#计算运算式结果
res = eval(formula)
return res,formula
if __name__ == '__main__':
#所有可能的结果
total = 3 ** 8
for i in range(total):
res,formula = isHundred(i)
if res == 100:
print(formula+' = 100')
结果: /usr/bin/python3.5 /home/kang/workspace/Qt3d/test.py 123+45-67+8-9 = 100 123+4-5+67-89 = 100 123-45-67+89 = 100 123-4-5-6-7+8-9 = 100 12+3+4+5-6-7+89 = 100 12+3-4+5+67+8+9 = 100 12-3-4+5-6+7+89 = 100 1+23-4+56+7+8+9 = 100 1+23-4+5+6+78-9 = 100 1+2+34-5+67-8+9 = 100 1+2+3-4+5+6+78+9 = 100 以上这篇Python实现1-9数组形成的结果为100的所有运算式的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
