给定非负整数的非空列表,请考虑将其重写为算术问题,其中:
+
在成对的数字之间插入一个加号(),这些数字从左到右递增(也就是从列表的开头到结尾)。-
在从左到右递减的数字对之间插入一个减号()。*
在成对的数字对之间插入一个乘号()。
换一种说法:if ,if 和if a,b
会成为任何子列表。a+b
a<b
a-b
a>b
a*b
a==b
例如清单
[12, 0, 7, 7, 29, 10, 2, 2, 1]
将成为表达
12 - 0 + 7*7 + 29 - 10 - 2*2 - 1
结果为 75
。
编写一个包含此类列表并对其进行评估,打印或返回结果的程序或函数。
- 操作顺序很重要。乘法应该在任何加法或减法之前完成。
- 如果输入列表中有一个数字,那应该是它的计算结果。例如
[64]
应该给64
。 - 使用
eval
或exec
或类似结构是允许的。
以下是一些其他示例:
[list]
expression
value
[0]
0
0
[1]
1
1
[78557]
78557
78557
[0,0]
0*0
0
[1,1]
1*1
1
[2,2]
2*2
4
[0,1]
0+1
1
[1,0]
1-0
1
[1,2]
1+2
3
[2,1]
2-1
1
[15,4,4]
15-4*4
-1
[9,8,1]
9-8-1
0
[4,2,2,4]
4-2*2+4
4
[10,9,9,12]
10-9*9+12
-59
[1,1,2,2,3,3]
1*1+2*2+3*3
14
[5,5,4,4,3,3]
5*5-4*4-3*3
0
[3,1,4,1,5,9,2,6,5,3,5,9]
3-1+4-1+5+9-2+6-5-3+5+9
29
[7637,388,389,388,387,12,0,0,34,35,35,27,27,2]
7637-388+389-388-387-12-0*0+34+35*35-27*27-2
7379
以字节为单位的最短代码获胜。决胜局是较早的答案。