字符串以变量的形式给出。让我们称其为变量s。众所周知,该字符串看起来像一个使用+、-、*、/的计算表达式。没有括号。
计算字符串中的表达式并将结果存储在变量r中(您可以假设它已经声明了)。所有的除法都可以在没有剩馀数的情况下进行(4-6*3/8无效,因为8不能被3除)。字符串长度不受限制。字符串不能包含0。
挑战不应该给某些语言带来优势,所以我决定改变一些数学规则:
运算符优先级与数学和编程语言表达式略有不同:乘法/除法仍然高于加法/减运算。然而,如果连续存在一些乘法/除法,则从右到左执行。加法/减法是从左到右预先形成的。
示例s和r:
2+5-6/9*8+7 -> 2
1/3*6-6 -> 12
最短的代码(以字节为单位)获胜。
发布于 2014-01-06 00:26:16
s = "2+5-6/9*8+7";
ToExpression@StringReplace[s,"/"->"^-1 "]2
如果我错了就纠正我
发布于 2014-01-06 06:19:20
r=int(eval(s.replace("/","**-1*")))如果你不害怕浮点值,试试这个。
r=eval(s.replace("/","**-1*"))它们都计算字符串s,并将结果存储在变量r中。
发布于 2014-01-05 23:45:30
x?_)→R6个字符和6个字节
编辑--既然原来的问题已经改变了,下面是一些臃肿的代码:
@iS_,"*")\\iS_,"/$_4;I,1,l?A;)-1:s;A;,2I,1)+A;&s;A;,1I→_&x?_)→R我认为我做得很好;我只做了63个字符;)超过1,000%的浮肿
https://codegolf.stackexchange.com/questions/17676
复制相似问题