正剧开始:
星历2016年01月27日 14:45:58, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起学习四则运算。
什么是加法呢?
什么是减法呢?
什么是乘法呢?
什么是除法呢?
小伟又看到了关于0的运算。
还有这个游戏:
能找到几组呢,小伟来了兴趣:
<span style="font-size:18px;">>>> 第1行,第1列为起点的2*2矩形内的数和是340。 第1行,第2列为起点的2*2矩形内的数和是340。 第1行,第3列为起点的2*2矩形内的数和是340。 第2行,第1列为起点的2*2矩形内的数和是340。 第2行,第2列为起点的2*2矩形内的数和是340。 第2行,第3列为起点的2*2矩形内的数和是340。 第3行,第1列为起点的2*2矩形内的数和是340。 第3行,第2列为起点的2*2矩形内的数和是340。 第3行,第3列为起点的2*2矩形内的数和是340。 def tmp(): a = [[10,80,100,150],[140,110,50,40],[70,20,160,90],[120,130,30,60]]; for i in range(3): for j in range(3): if a[i][j]+a[i][j+1]+a[i+1][j]+a[i+1][j+1]==340: print('第{0}行,第{1}列为起点的2*2矩形内的数和是340。'.format(i+1,j+1)); return; 结果说明整个4*4矩阵内的数都是符合相邻数和等于340这个规律的。</span>
[人叫板老师]给的这个24的题,其实有好几种答案:
<span style="font-size:18px;">>>> 给出[6, 2, 3, 4],算式6*2+3*4=24 给出[6, 2, 3, 4],算式(6*2)+3*4=24 给出[6, 2, 3, 4],算式6*2+(3*4)=24 给出[6, 2, 3, 4],算式(6*2)+(3*4)=24 给出[6, 2, 3, 4],算式(6/2+3)*4=24</span>
<span style="font-size:18px;"># 算24 def tmp(): op = ['+', '-', '*', '/']; a = [6, 2,3,4]; for i in range(4): for j in range(4): for k in range(4): s =[]; s0 = str(a[0])+op[i]+str(a[1])+op[j]+str(a[2])+op[k]+str(a[3]); s.append(s0); s0 = '('+str(a[0])+op[i]+str(a[1])+')'+op[j]+str(a[2])+op[k]+str(a[3]); s.append(s0); s0 = '('+str(a[0])+op[i]+str(a[1])+op[j]+str(a[2])+')'+op[k]+str(a[3]); s.append(s0); s0 = str(a[0])+op[i]+'('+str(a[1])+op[j]+str(a[2])+')'+op[k]+str(a[3]); s.append(s0); s0 = str(a[0])+op[i]+'('+str(a[1])+op[j]+str(a[2])+op[k]+str(a[3])+')'; s.append(s0); s0 = str(a[0])+op[i]+str(a[1])+op[j]+'('+str(a[2])+op[k]+str(a[3])+')'; s.append(s0); s0 = '('+str(a[0])+op[i]+str(a[1])+')'+op[j]+'('+str(a[2])+op[k]+str(a[3])+')'; s.append(s0); for m in range(len(s)): result = eval(s[m]); intresult = int(result); if intresult == 24 and abs(intresult - result) < 0.0001: print('给出{0},算式{1}={2}'.format(a, s[m], intresult)); solve = 1; return;</span>
小伟早就想要算一算24了,这是一个历史悠久的游戏:
<span style="font-size:18px;">>>> [8, 8, 4, 3] 无解。 给出[12, 3, 13, 4],算式12+3+13-4=24 给出[6, 9, 6, 2],算式(6*9-6)/2=24 给出[9, 3, 12, 8],算式(9-3)*(12-8)=24 [7, 1, 7, 7] 无解。 [13, 3, 4, 7] 无解。 [11, 5, 10, 5] 无解。 给出[1, 4, 2, 8],算式(1+4-2)*8=24 [11, 1, 11, 7] 无解。 给出[3, 2, 3, 6],算式(3-2+3)*6=24 # 算24 def tmp(): op = ['+', '-', '*', '/']; a = [6, 2,3,4]; solve = 0; import random; for play in range(10): solve = 0; a = []; for num in range(4): a.append(random.randrange(1,14)); for i in range(4): if solve > 0: break; for j in range(4): if solve > 0: break; for k in range(4): if solve > 0: break; s =[]; s0 = str(a[0])+op[i]+str(a[1])+op[j]+str(a[2])+op[k]+str(a[3]); s.append(s0); s0 = '('+str(a[0])+op[i]+str(a[1])+')'+op[j]+str(a[2])+op[k]+str(a[3]); s.append(s0); s0 = '('+str(a[0])+op[i]+str(a[1])+op[j]+str(a[2])+')'+op[k]+str(a[3]); s.append(s0); s0 = str(a[0])+op[i]+'('+str(a[1])+op[j]+str(a[2])+')'+op[k]+str(a[3]); s.append(s0); s0 = str(a[0])+op[i]+'('+str(a[1])+op[j]+str(a[2])+op[k]+str(a[3])+')'; s.append(s0); s0 = str(a[0])+op[i]+str(a[1])+op[j]+'('+str(a[2])+op[k]+str(a[3])+')'; s.append(s0); s0 = '('+str(a[0])+op[i]+str(a[1])+')'+op[j]+'('+str(a[2])+op[k]+str(a[3])+')'; s.append(s0); for m in range(len(s)): if solve > 0: break; try: result = eval(s[m]); intresult = int(result); if intresult == 24 and abs(intresult - result) < 0.0001: print('给出{0},算式{1}={2}'.format(a, s[m], intresult)); solve = 1; except: pass; if (solve == 0): print('{0} 无解。'.format(a)); return;</span>
<span style="font-size:18px;">>>> 给出[3, 3, 3, 3],算式3+3-3-3=0 给出[3, 3, 3, 3],算式3-3+3-3=0 给出[3, 3, 3, 3],算式3-3-3+3=0 给出[3, 3, 3, 3],算式3-3*3/3=0 给出[3, 3, 3, 3],算式3-3/3*3=0 给出[3, 3, 3, 3],算式3*3-3*3=0 给出[3, 3, 3, 3],算式3*3/3-3=0 给出[3, 3, 3, 3],算式3/3-3/3=0 给出[3, 3, 3, 3],算式3/3*3-3=0 给出[3, 3, 3, 3],算式3+3/3-3=1 给出[3, 3, 3, 3],算式3-3+3/3=1 给出[3, 3, 3, 3],算式3*3/3/3=1 给出[3, 3, 3, 3],算式3/3+3-3=1 给出[3, 3, 3, 3],算式3/3-3+3=1 给出[3, 3, 3, 3],算式3/3*3/3=1 给出[3, 3, 3, 3],算式3/3/3*3=1 给出[3, 3, 3, 3],算式3/3+3/3=2 给出[3, 3, 3, 3],算式3*3-3-3=3 给出[3, 3, 3, 3],算式3+3-3/3=5 给出[3, 3, 3, 3],算式3-3/3+3=5 给出[3, 3, 3, 3],算式3+3+3-3=6 给出[3, 3, 3, 3],算式3+3-3+3=6 给出[3, 3, 3, 3],算式3+3*3/3=6 给出[3, 3, 3, 3],算式3+3/3*3=6 给出[3, 3, 3, 3],算式3-3+3+3=6 给出[3, 3, 3, 3],算式3*3/3+3=6 给出[3, 3, 3, 3],算式3/3*3+3=6 给出[3, 3, 3, 3],算式3+3+3/3=7 给出[3, 3, 3, 3],算式3+3/3+3=7 给出[3, 3, 3, 3],算式3/3+3+3=7 给出[3, 3, 3, 3],算式3*3-3/3=8 给出[3, 3, 3, 3],算式3+3*3-3=9 给出[3, 3, 3, 3],算式3-3+3*3=9 给出[3, 3, 3, 3],算式3*3+3-3=9 给出[3, 3, 3, 3],算式3*3-3+3=9 给出[3, 3, 3, 3],算式3*3*3/3=9 给出[3, 3, 3, 3],算式3*3/3*3=9 给出[3, 3, 3, 3],算式3/3*3*3=9 def tmp2(): op = ['+', '-', '*', '/']; a = [3, 3, 3, 3]; for require in range(10): for i in range(4): for j in range(4): for k in range(4): s =[]; s0 = str(a[0])+op[i]+str(a[1])+op[j]+str(a[2])+op[k]+str(a[3]); s.append(s0); for m in range(len(s)): try: result = eval(s[m]); intresult = int(result); if intresult == require and abs(intresult - result) < 0.0001: print('给出{0},算式{1}={2}'.format(a, s[m], intresult)); solve = 1; except: pass; return; if __name__ == '__main__': tmp2(); </span>
本节到此结束,欲知后事如何,请看下回分解。