|
|
发表于 2016-1-4 22:55:49
|
显示全部楼层
本帖最后由 zooo 于 2016-1-4 23:54 编辑
一个下午+整个晚上完成了一部分
运行结果(方法二计算得到):
4/1*503-2+6
4/1*503+6-2
4*503/1-2+6
4*503/1+6-2
4*503-2/1+6
4*503-2+6/1
4*503+6/1-2
4*503+6-2/1
503/1*4-2+6
503/1*4+6-2
503*4/1-2+6
503*4/1+6-2
503*4-2/1+6
503*4-2+6/1
503*4+6/1-2
503*4+6-2/1
6/1-2+4*503
6/1-2+503*4
6/1+4*503-2
6/1+503*4-2
6-2/1+4*503
6-2/1+503*4
6-2+4/1*503
6-2+4*503/1
6-2+503/1*4
6-2+503*4/1
6+4/1*503-2
6+4*503/1-2
6+4*503-2/1
6+503/1*4-2
6+503*4/1-2
6+503*4-2/1
有两种方法:
方法一
(理论上只要内存足够大就可以得出结果,我的电脑只有2G内存,所以没算出来 )
- import itertools
- list1='0123456+-*/'
- iter = itertools.permutations(list1)#排列
- for i in iter:
- zooo=''.join(i)#连接成字符串
- try:
- b=eval(zooo)
- if 2016 == b:
- print(zooo)
- except:
- a=1
复制代码
方法二(得出了部分结果)
- import itertools
- list1='0123456'
- iter = itertools.permutations(list1)#排列
- num = list(iter)
- numSize = len(num)
- #分组
- gNum=[]
- for w in range(numSize):
- a=num[w]
- b=list(a[ : 5])
- for i in range(5):
- b[i] = b[i] + a[5]
- temp = b[ : ]
- for j in range(5):
- b[j] = b[j]+a[6]
- gNum.append(b)
- b = temp[ : ]
- b = list(a[ : 5])
- list2 = '+-*/'
- iter = itertools.permutations(list2)#排列
- operate = list(iter)
- gSize=len(gNum)#c[1000]=['03', '16', '4', '2', '5']
- oSize = len(operate)
- for i in range(gSize):
- for j in range(oSize):
- temp = gNum[i][0] + operate[j][0]+gNum[i][1] + operate[j][1]+gNum[i][2] + operate[j][2]+gNum[i][3] + operate[j][3]+gNum[i][4]
- zooo=''.join(temp)#连接成字符串
- try:
- iAns=eval(zooo)
- if 2016 == iAns:
- print(zooo)
- except:
- x=1
复制代码
|
评分
-
查看全部评分
|