如何在Ruby中求解动态代数方程?

时间:2013-11-10 19:07:21

标签: ruby eval

如果我在字符串x = y + (10/2) * 6中有一个公式(它是动态的,那么不一定是这样),我知道x = 5。如何计算y的值?

3 个答案:

答案 0 :(得分:3)

您可以使用dentaku

之类的解析器
require 'dentaku'

calculator = Dentaku::Calculator.new
calculator.evaluate('10 * 2')
# => 20
calculator.evaluate('kiwi + 5', :kiwi => 2)
# => 7

答案 1 :(得分:2)

Wolfram Alpha有免费(有注册)API。有人甚至有made a gem

答案 2 :(得分:1)

您可以使用calculus

001:0> require 'calculus'
true
002:0> exp = Calculus::Expression.new("2 + 3 * x")
#<Expression:f46e77a9377ed2d5a9da768496a7e1c20be51bfe postfix_notation=[2, 3, "x", :mul, :plus] variables={"x"=>nil}>
003:0> exp.postfix_notation
[2, 3, "x", :mul, :plus]
004:0> exp.abstract_syntax_tree
[:plus, 2, [:mul, 3, "x"]]
005:0> exp.variables
["x"]
006:0> exp.unbound_variables
["x"]
007:0> exp["x"] = 5
5
008:0> exp.unbound_variables
[]
009:0> exp.calculate
17