Python实现1-9数组形成的结果为100的所有运算式的示例
2017-11-03 08:41
1006 查看
问题:
编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34–5 + 67–8 + 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的所有运算式的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- Python算法输出1-9数组形成的结果为100的所有运算式
- Python实现找出数组中第2大数字的方法示例
- Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
- Java实现爬取往期所有双色球开奖结果功能示例
- Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
- Python实现在某个数组中查找一个值的算法示例
- Python实现在给定整数序列中找到和为100的所有数字组合
- Python实现翻转数组功能示例
- Python实现返回数组中第i小元素的方法示例
- Python实现合并同一个文件夹下所有txt文件的方法示例
- 使用python实现打印所有100以内的所有质数
- 实现求出若干整数之和为500的连续整数(如98,99,100,101,102)的所有组合&&产生一个int数组,长度为100,并向其中随机插入1~100,要求不能重复
- 14行Python代码实现 n 皇后问题(可求出所有结果)
- 程序员面试题精选100题(03)-求子数组的最大和—python实现
- Python实现求一个集合所有子集的示例
- Java 求1-100以内的所有素数,判断一个数是不是素数。Java代码实现附测试结果图
- Python实现合并同一个文件夹下所有PDF文件的方法示例
- 程序员面试题精选100题(04)-在二元树中找出和为某一值的所有路径—python实现
- Python实现字符串与数组相互转换功能示例
- Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例