gpt4 book ai didi

javascript - 在评估之前比较数学方程 javascript

转载 作者:行者123 更新时间:2023-12-03 00:18:40 24 4
gpt4 key购买 nike

我正在学习代数并尝试创建一个 JavaScript 测试器函数,该函数比较两个方程并确定它们是否被视为关联属性。换句话说,如果我将 (a + b) + c 与 a + (b + c) 分组​​,结果将是相同的。仅乘法和加法。

到目前为止,我已尝试构建一个简单的函数来解析最终值是否等于比较的方程值。我想要的是如果我能够在没有括号的情况下比较两个方程。认为我需要查找正则表达式...但正在寻找一些有关方向的帮助。

let a = 1,
b = 2,
c = 3,
number1 = (a * b) * c,
number2 = a * (b * c);

function isAssociative(num1, num2) {
let answer = num1 === num2;
return `Are ${num1} and ${num2} associative... ${answer}`;
}

console.log(isAssociative(number1, number2));

目前,这会导致“6 和 6 关联吗……为真”。这就是我想要的,但如果我在调用函数时将第二个参数更改为静态 6...那么这不是关联组合,我希望它返回 false。

最佳答案

您可以使用 Mathjs 和 simplify方法:

console.clear();

term_a = 'a + ( b + c )'
term_b = '( a + b ) + c';

tree_a = math.simplify(term_a);
tree_b = math.simplify(term_b);

console.log(term_a, tree_a.equals(tree_b) ? 'equals' : 'differs from', term_b);

term_a = 'a + ( b + c + d )'
term_b = '( a + b ) + c';

tree_a = math.simplify(term_a);
tree_b = math.simplify(term_b);

console.log(term_a, tree_a.equals(tree_b) ? 'equals' : 'differs from', term_b);
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/5.4.2/math.min.js"></script>

关于javascript - 在评估之前比较数学方程 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54423809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com