通过填充 JavaScript 中缺失的操作符来完成方程式
我们需要编写一个 JavaScript 函数,它接收一系列数字并返回满足方程式的正确运算符序列。可以使用(+, −, *, /, ^, %) 这些运算符。
例如 -
Input : 5 3 8 Output : 5+3=8 Input : 9 27 3 Output : 9=27/3 Input : 5 2 25 , 1 5 2 Output : 5^2=25 , 1=5%2
对于每个输入,至少存在一个可能的序列,我们需要返回至少一个正确的序列。
我们将用来解决此问题的算法是 -
首先,我们在其中一侧选择较大的数字,例如在 1 4 7 中,它将是 7
然后我们放置一个等号面向中间。例如 1 4 7 将是 1 4=7
最后,我们求解方程
如果这不起作用,我们尝试另一个数字
示例
此代码将为 -
const arr = ["5 3 8", "9 27 3", "5 2 25", "1 5 2", "3 3 3 30"]; const findCombination = (arr = []) => { const answers = []; for(let i = 0; i < arr.length; i++){ const el = arr[i]; // using brute force to try solutions for(let n = 0; n < 1000; n++){ const s = el.replace(/ /g, () => "+− */^%="[Math.floor(Math.random() * 7)]); if(eval(s.replace(/=/g, "===").replace(/\^/g, "**")) === true && answers.indexOf(s) === −1){ answers.push(s); }; }; } return answers; }; console.log(findCombination(arr));
输出
控制台中的输出将为 -
[ '5+3=8', '9=27/3', '5^2=25', '1=5%2', '3=3%3^30', '3^3+3=30', '3+3^3=30' ]
广告