相关疑难解决方法(0)

评估一串简单的数学表达式

挑战

这是挑战(我自己的发明,但如果以前出现在网络的其他地方,我不会感到惊讶).

编写一个函数,该函数采用单个参数,该参数是简单数学表达式的字符串表示形式,并将其作为浮点值进行计算."简单表达"可以包括以下任何一种:正十进制数或负十进制数,+,-,*,/,(,).表达式使用(正常)中缀表示法.操作员应按其出现的顺序进行评估,即不像BODMAS中那样进行 评估,但当然应该正确观察括号.该函数应该为此表单的任何可能表达式返回正确的结果.但是,该函数不必处理格式错误的表达式(即语法错误的表达式).

表达的例子:

1 + 3 / -8                            = -0.5       (No BODMAS)
2*3*4*5+99                            = 219
4 * (9 - 4) / (2 * 6 - 2) + 8         = 10
1 + ((123 * 3 - 69) / 100)            = 4
2.45/8.5*9.27+(5*0.0023)              = 2.68...
Run Code Online (Sandbox Code Playgroud)

规则

我预计会有某种形式的"作弊"/狡猾,所以请让我预先反对它!通过作弊,我指的是eval在动态语言(如JavaScript或PHP)中使用或等效函数,或者同时编译和执行代码.(我认为我的"没有BODMAS"的规格几乎可以保证这一点.)除此之外,没有任何限制.我在这里预计会有一些Regex解决方案,但不仅仅是这样,我们会感到很高兴.

现在,我主要对C#/ .NET解决方案感兴趣,但是任何其他语言都是完全可以接受的(特别是F#和Python用于功能/混合方法).我还没有决定我是否会接受最短或最巧妙的解决方案(至少对于语言而言)作为答案,但我欢迎任何语言的任何形式的解决方案,除了我刚才禁止的!

我的解决方案

我现在在这里发布了我的C#解决方案(403个字符).更新: …

math parsing code-golf infix-notation text-parsing

76
推荐指数
21
解决办法
1万
查看次数

使用Lua评估数学表达式

在我之前的问题中,我一直在寻找一种在C中使用复杂数学表达式的方法,大多数建议都需要实现某种类型的解析器.

然而,有一个答案,建议使用Lua来评估表达式.我对这种方法感兴趣,但我对Lua一无所知.

有一个有Lua经验的人可以解释一下吗?

具体来说,我想知道 哪个是Lua提供哪种API可以评估作为字符串传入的数学表达式?如果没有API来做这样的事情,可能有些人可以对链接的答案有所了解,因为这似乎是一个很好的方法:)

谢谢

我想要评估的表达式类型给出了一些用户输入,例如

y = x ^ 2 + 1/x - cos(x)

评估y的x值范围

lua mathematical-expressions

5
推荐指数
1
解决办法
6557
查看次数