转换方程式

时间:2018-06-11 10:36:05

标签: javascript java algorithm

我有一个像1+(x*10) = 21这样的字符串形式的等式。我必须像任何语言中的x = (21-1)/10一样转换它。我不想要一个确切的解决方案,但请给我一些提示。

3 个答案:

答案 0 :(得分:2)

如果提示足够你可以查看这个库:

http://algebra.js.org/

它能够获取方程的定义(作为字符串或逐步),解决它们并使结果可用作字符串。

答案 1 :(得分:2)

最简单的方法 - 从命令行传递方程式调用一些CAS(计算机代数系统)程序来解决。像:

function b({ a }) {
  return {
    console.log(a) // returns undefined
  }
}

从标准输出中获得结果。但当然这应该在服务器端完成, 即,如果来自PHP - 可以使用maxima --very-quiet -r 'solve ([1+(x*10) = 21], [x]);' 函数执行。

答案 2 :(得分:0)

对我来说,这个问题可分为两个阶段,找到x的一侧(" ="的左侧或右侧),以及扫描和转换文字以及相应的操作

对于第一阶段,您可以通过简单地比较" ="的索引来找到等式x的哪个部分。和" x"在字符串中。

现在需要担心两种类型的组件,即操作数(值)和操作(+, - 等)。 您可以尝试从" x-side"中转移操作数。另一方面,只需转换与值相关的操作(+变为 - 反之亦然,*和/相同)。例如,1 + x = 7。1是操作数,' +'是与1相关联的操作,它被转换为' - '当它移动到另一边时。

每次将操作数和操作移动到另一侧时,请务必在右侧的开头和末尾添加一个括号,以便等式保持需要完成的计算顺序。

希望这有帮助!