介绍
在童年时期,当您认为自己已经掌握了加法和乘法运算时,就会出现一个观点,然后有人来告诉您:
a * b + c =(a * b)+ c!= a *(b + c),
而且它不像您先前所讲的那样简单或线性。您了解到存在一种称为操作顺序的事物。这是保持某种程度的一致性和表达式的一种非常重要的方法,而不会让括号妨碍所有内容。
一般故事情节
有一天,你醒来时在街上惊慌失措。一个以“ 2560 ” 为名的极端主义团体(“反对行动组织”的简称,带有诡异的六角形扭曲)已经使用了邪恶的方法来控制世界上所有的核武器。他们束缚着整个星球的人质,他们有一个简单的要求:逆转公认的行动顺序或铲除面孔(括号是他们的首要任务)。新系统称为PSADME(括号,减法/加法,除法/乘法,指数),表达式从右到左求值:
a - b - c = a - (b - c) = a + c - b
几天过去了,过渡正在进行中。在数学家和物理学家都忙于重写方程式的同时,计算机科学家面临着改变计算机解释数学表达式的方式的任务。您属于一个秘密的反叛程序设计小组,该小组旨在给新的全球霸主造成尽可能多的折磨-偶然地,您被The 2560随机选中,并负责制定基准计算程序。
你的任务
编写一个程序(或函数),将一个(数值)数学表达式作为输入,使用PSADME作为运算顺序来计算该表达式并输出结果。表达式应从右到左求值,因此
为简单起见,提供的所有数字均为整数,并且计算将得出整数结果。
规则和计分
- 该程序应接受最多128个字符的输入-如果您的语言/平台的最大输入长度较短,那是可以接受的借口。
- 禁止出现标准漏洞。
- 获奖代码将在11月18日(从发布日期起4周)内进行选择。
- 随意发布不被认为是值得高尔夫的代码。这是关于乐趣。如果您有一种有趣的方式进行此操作,但不能自己打高尔夫球(或根据方法的性质),则可以将其发布。
按照惯例,获胜的代码是字节数最少的代码,并带有一些娱乐性价值的奖励:
- -5用于避免在提供的表达式中使用任何字符:+,-,(,),^,*,/
- -5用于在标准计算机上进行超过5分钟(但不超过10分钟)的计算,而方法并不明显(使用时钟或不必要的循环);其目的是要说服新的霸主,你是不是想破坏他们的死命的计算。
- -(5 + N),用于在您的代码中清晰可见地写出有关2560成员的直接攻击性消息(长度N,不包括开头/结尾的空白),并对为什么需要将其作一些荒谬的解释那里。如果将其删除,则代码不能正确运行。是的,获得娱乐价值的免费积分。
例子和解释
[program] 2 - 2 - 2
2
2-(2-2)= 2
[program] (2 + 2 * 3 + 3) / 3 + 3
4
(4 * 6)/(3 + 3)= 4
[program] 3 + 2 + 1 ^ 3
216
(3 + 2 + 1)^ 3 = 216
[program] -5^2
25
(-5)^ 2 = 25
[program] 32 / 8 * 3 - 1
2
32 /(8 *(3-1))= 32/16 = 2
P(SA)(DM)E。
1 - 3 + 4 = 1 - 7?从右到左将表明是这样,但这与PSADME相反,是在加法之前加上加法,不是吗?