const { getRandomFm, ErrorTree } = require("./born-fm"); // 生成公式
const layer = 3 // 复杂度
let [newFm, newNum] = getRandomFm(layer)
// newFm 生成的公式
// newNum 生成公式的值 这个值的算法 和 calculator-by-str的算法不同
// 用newNum 的值 和 fmFunc(newFm) 的值比较 就知道算法是否正确
// 支持的函数
const formulas = {
"Math.abs": [Math.abs, 1],
"Math.acos": [Math.acos, 1],
"Math.asin": [Math.asin, 1],
"Math.atan": [Math.atan, 1],
"Math.atan2": [Math.atan2, 2],
"Math.ceil": [Math.ceil, 1],
"Math.cos": [Math.cos, 1],
"Math.floor": [Math.floor, 1],
"Math.log": [Math.log, 1],
"Math.max": [Math.max, 2], // max 为了和其他语言同步 改成两个 如果需要用多个参数 可以把2改成"more"
"Math.min": [Math.min, 2], // min 为了和其他语言同步 改成两个 如果需要用多个参数 可以把2改成"more"
"Math.pow": [Math.pow, 2],
"Math.round": [round, 1],
"Math.sin": [Math.sin, 1],
"Math.sqrt": [Math.sqrt, 1],
"Math.tan": [Math.tan, 1],
"Math.mod": [mod, 2], // 非Math方法
"Math.PI": [Math.PI],
// "Math.SQRT2": [Math.SQRT2],// 需要的话可以打开注释,测试文件记得同步打开注释
// "Math.LN10": [Math.LN10],
// "Math.LOG10E": [Math.LOG10E],
// "Math.LOG2E": [Math.LOG2E],
// "Math.SQRT1_2": [Math.SQRT1_2],
// "Math.SQRT2": [Math.SQRT2],
}
// 支持的计算符号
1. +
2. -
3. *
4. /
5. **