Решение линейных уравнений и подобных задач алгебры с JavaScript

Я новичок в JavaScript и пытаюсь написать простой скрипт, который решает линейные уравнения. Пока что мой сценарий решает линейные уравнения, которые только плюс и минус, такие как «2x + 28 - 18x = 36 - 4x + 10». Я хочу, чтобы он также мог решать линейные уравнения / задачи алгебры, которые содержат умножение и деление, такие как «2x * 3x = 4 / 2x».

У меня вроде есть представление о том, что делать дальше, но я думаю, что сценарий, который у меня есть сейчас, может быть слишком сложным, и это только усложнит добавление умножения и деления.

Ниже мой сценарий. Я надеюсь на несколько советов о том, как я могу улучшить и упростить то, что у меня уже есть, и как лучше всего добавить умножение и деление?

Мой сценарий на JS Bin:http://jsbin.com/ufekug/1/edit

Мой сценарий:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Problem Solver</title>
<script>
window.onload = function() {
    // Total Xs on each side of equation
    // Example problem: 5x + 2 = 10 - 2x
    var leftSideXTotal = 0; // 5
    var rightSideXTotal = 0; // -2

    // Total integers on each side of equation
    // Example problem: 5x + 2 = 10 - 2x
    var leftSideIntTotal = 0; // 2
    var rightSideIntTotal = 0; // 10


    // Enter a math problem to solve
    var problem = "5x + 2 = 10 - 2x";


    // Remove all spaces in problem
    // Example problem: 5x + 2 = 10 - 2x
    problem = problem.replace(/\s/g,''); // 5x+2=10-2x

    // Add + signs in front of all - signs
    // Example problem: 5x + 2 = 10 - 2x
    problem = problem.replace(/-/gi, "+-"); // 5x+2=10+-2x

    // Split problem into left and right sides
    // Example problem: 5x + 2 = 10 - 2x
    var problemArray = problem.split("=");
    var problemLeftSide = problemArray[0]; // 5x+2
    var problemRightSide = problemArray[1]; // 10+-2x

    // Split values on each side into an array
    var problemLeftSideValues = problemLeftSide.split("+");
    var problemRightSideValues = problemRightSide.split("+");

    // Go through the left side values and add them up
    for (var i = 0; i < problemLeftSideValues.length; i++) {

        // Current value
        var currentValue = problemLeftSideValues[i];
        // Length of current value
        var currentValueLength = currentValue.length;

        if (currentValue.charAt(currentValueLength - 1) == "x") { //Check if current value is a X value

            // Remove X from end of current value
            currentValue = currentValue.split("x");

            // Add to total Xs on left side
            leftSideXTotal = Number(leftSideXTotal) + Number(currentValue[0]);

        } else {

            // Add to total integers on left side
            leftSideIntTotal = Number(leftSideIntTotal) + Number(problemLeftSideValues[i]);

        }
    }

    // Go through the right side values and add them up
    for (var i = 0; i < problemRightSideValues.length; i++) {

        // Current value
        var currentValue = problemRightSideValues[i];
        // Length of current value
        var currentValueLength = currentValue.length;

        if (currentValue.charAt(currentValueLength - 1) == "x") { //Check if current value is a X value

            // Remove X from end of current value
            currentValue = currentValue.split("x");

            // Add to total Xs on right side
            rightSideXTotal = Number(rightSideXTotal) + Number(currentValue[0]);

        } else {

            // Add to total integers on right side
            rightSideIntTotal = Number(rightSideIntTotal) + Number(problemRightSideValues[i]);

        }
    }

    // Compute
    var totalXs = (leftSideXTotal - rightSideXTotal)
    var totalIntegers = (rightSideIntTotal - leftSideIntTotal)
    var solution = (totalIntegers / totalXs)

    // Display solution
    document.getElementById("divSolution").innerText = solution;
}
</script>
</head>

<body>
<div id="divSolution"></div>
</body>
</html>

Ответы на вопрос(2)

Ваш ответ на вопрос