Действие "шаблон"
Как можно реализовать решение линеных уравнений
-
Как можно решать линейные уравнения? Самые простые где 2 числа, неизвестное и + - * /
типа
6*X=14
X+2=80
12+15=X -
@vaxab23111 Простой способ: переместите X в одну сторону выражения.
X = 14/6
X = 80 - 2
X = 12+15

-
@vaxab23111
Первое что пришло в головуvar task = "X+2=80"; var task_temp = ''; var task_arr = []; for (var i = 0; i < task.length; i++) { var ch = task[i] if (/[0-9]/i.test(ch)) { task_temp += ch; } else { if (task_temp != '') { task_arr.push(task_temp); task_temp = ''; } task_arr.push(ch); } } if (task_temp != '') { task_arr.push(task_temp); } var reversed = { "+":"-", "-":"+", "*":"/", "/":"*", } switch(task_arr.indexOf("X")){ case 0: { task = task_arr[4]+reversed[task_arr[1]]+task_arr[2]; break; } case 2: { task = task_arr[4]+reversed[task_arr[1]]+task_arr[0]; break; } case 4: { task = task_arr.join("").replace("=X",''); break; } } eval("var result="+task) [[A]]=Math.round(result) -
@vaxab23111 Тоже решил поучавствовать на разминки мозга, на 100% не претендует
function getCooficient(exp) { var matched = exp.match(/(\d+)[\s*+-/]*[A-z]/) if (matched) { return parseFloat(matched.pop()) } return 1 } function evalSide(exp) { var cleanExp = exp.replace(/\d*[\s*+-/]*[A-z]/, '') if (!cleanExp) return 0 return eval(cleanExp) } function invertResult(num) { return num > 0? -num : num } function solveEquation(equation) { var parts = equation.split("=") var leftSide = parts[0].trim() var rightSide = parts[1].trim() var coefficient = 1 var leftSideResult = evalSide(leftSide) var rightSideResult = evalSide(rightSide) if (/[A-z]/.test(leftSide)) { var coefficient = getCooficient(leftSide) leftSideResult = invertResult(leftSideResult) } else { var coefficient = getCooficient(rightSide) rightSideResult = invertResult(rightSideResult) } return (leftSideResult + rightSideResult) / coefficient } log(solveEquation("6 * X=14")); // выводит 2.3333333333333335 log(solveEquation("X+2=80")); // выводит 78 log(solveEquation("12+15=X")); // выводит 27 log(solveEquation("6 *X + 2=14")); // выводит 2 log(solveEquation("X+2 * 2=80")); // выводит 76 log(solveEquation("12+15/5=X")); // выводит 15 [[BAS_VARIABLE]] = solveEquation("6 * X=14")