相关疑难解决方法(0)

Code Golf:数学表达式评估器(尊重PEMDAS)

我挑战你写一个数学表达式评估器,它尊重PEMDAS(操作顺序:括号,取幂,乘法,除法,加法,减法)而不使用正则表达式,一个预先存在的"Eval()" - 类似函数,一个解析库等

我在SO(这里)看到了一个预先存在的评估者挑战,但那个特别需要从左到右的评估.

样本输入和输出:

"-1^(-3*4/-6)" -> "1"

"-2^(2^(4-1))" -> "256"

"2*6/4^2*4/3" -> "1"
Run Code Online (Sandbox Code Playgroud)

我在C#中编写了一个评估器,但是我想看看它与那些选择语言的智能程序员相比有多糟糕.

有关:

Code Golf:评估数学表达式

澄清:

  1. 让我们使这个函数接受一个字符串参数并返回一个字符串结果.

  2. 至于为什么没有正则表达式,那就是平衡竞争环境.我认为"最紧凑的正则表达式"应该有一个单独的挑战.

  3. 使用StrToFloat()是可以接受的.通过"解析库",我的意思是排除诸如通用语法解析器之类的东西,也用于平衡游戏场.

  4. 支持浮动.

  5. 支持paretheses,取幂和四个算术运算符.

  6. 赋予乘法和除法优先权.

  7. 赋予加法和减法相同的优先权.

  8. 为简单起见,您可以假设所有输入都是格式良好的.

  9. 我不喜欢你的函数是否接受".1"或"1e3"之类的东西作为有效数字,但是接受它们会获得布朗尼积分.;)

  10. 对于除零情况,您可能会返回"NaN"(假设您希望实现错误处理).

math parsing code-golf rosetta-stone

26
推荐指数
6
解决办法
6276
查看次数

标签 统计

code-golf ×1

math ×1

parsing ×1

rosetta-stone ×1