📄 24dian.py
字号:
#!/usr/bin/pythonimport psyco ; psyco.full()from psyco.classes import *import mathimport osimport sysimport numarrayif len(sys.argv) > 1: num24 = float(sys.argv[1])else: num24 = 24.0def oper(aa, bb, op): a, b = float(aa), float(bb) if op == 1: return [a+b,'+',1] elif op == 2: return [a-b,'-',1] elif op == 3: return [a*b,'*',2] else: if b == 0: return [1E8,'error',2] else: return [a/b,'/',2]def dostep(li, lstr, ops): global num24 if len(li) == 1 and abs(float(li[0])-num24) < 1E-4: print lstr[0],"=",int(num24) sys.exit() for i in range(0, len(li)-1): for op in range(1,5): op_res = oper(li[i], li[i+1], op) if op_res[1] == 'error': break newli = [] newli = li[0:i] newli.append(op_res[0]) newli.extend(li[i+2:]) newstr = [] newstr = lstr[0:i] if op_res[2] > ops[i]: tmplstr = "(" + lstr[i] + ")" else: tmplstr = lstr[i][:] if op_res[2] > ops[i+1]: tmprstr = "(" + lstr[i+1] + ")" else: tmprstr = lstr[i+1][:] newstr.append(tmplstr+op_res[1]+tmprstr) newstr.extend(lstr[i+2:]) newop = [] newop = ops[0:i] newop.append(op_res[2]) newop.extend(ops[i+2:]) dostep(newli, newstr, newop)def insert_all(ele, li): if len(li) == 0: return [[ele]] tli = [] for each_li in insert_all(li[0],li[1:]): for i in range(0, len(li)+1): newli=each_li[:] newli.insert(i, ele) tli.append(newli) return tlidef all(li): return insert_all(li[0], li[1:])def uni(li): ifFind = True while ifFind: ifFind = False for i in range(len(li)): if li.index(li[i]) != i: ifFind = True li.remove(li[i]) break return liinputline = raw_input('Enter the numbers:')numbers = inputline.split()allnum = uni(all(numbers))for li in allnum: str = li[:] ops = list(numarray.zeros((len(li),)) + 10) dostep(li, str, ops)print "No answer"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -