最近,我一直在写一种新的语言,以避免需要处理操作的顺序,我只是对每个表达式加上括号以完全避免这种情况。
因为括号位于字符代码40-41,所以您的代码将需要尽可能短。
例子
1+2*3
(1+(2*3))
2*(3+4)
(2*(3+4))
2*3/4+3
(((2*3)/4)+3)
342*32/8
((342*32)/8)
规则
您需要处理的唯一操作是:(*
乘法),/
(除法),+
(加法)和-
(减法)。
- 该操作的顺序是:
- 插入语
- 乘法,除法
- 加法,减法
- 您应该宁可左右走
- 输入数字将始终为正整数(请参阅奖励)
奖金
如果处理否定,则为-20%:
3+-5
(3+(-5))
-5%(如果您允许在输入内部放置空格):
3 + 4
(3+4)
如果您可以在输入中处理小数,则为-10%:
1+.12
(1+.12)
1+0.21/3
(1+(0.21/3))
25
“因为括号位于字符代码40-41,所以您的代码必须尽可能短。” 好吧,现在您只是简直荒谬。; P
—
ETHproductions 2015年
这比前缀(波兰语)表示法还容易,因为?
—
wizzwizz4 2015年
@flawr我看到了,但事实是这个问题让您输出了用括号括起表达式的所有方式,这是非常不同的。在这里,您必须考虑到操作顺序,我认为这是一个很大的不同,因为无法轻松地对此挑战进行代码修改
—
Downgoat 2015年
重要的测试案例:(
—
Martin Ender
1+2+3+4
某些解决方案可能用括号括起来((1+2)+(3+4))
)