Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function Solve(args) {
- var func = {};
- var result = 0;
- for (var i = 0; i < args.length; i++) {
- while (args[i].match(/\(/g).length > 1) {
- var startPosition = args[i].indexOf("(", args[i].indexOf("(") + 1);
- var endPosition = args[i].indexOf(')', startPosition);
- var value = calculate(args[i].substring(startPosition + 1, endPosition), func);
- if (typeof (value) == "string") {
- return "Division by zero! At Line:" + (i + 1);
- }
- args[i] = args[i].substring(0, startPosition) + ' ' + value + args[i].substring(endPosition + 1);
- }
- var startPosition = args[i].indexOf("(") + 1;
- var endPosition = args[i].indexOf(')');
- result = calculate(args[i].substring(startPosition, endPosition), func);
- if (typeof (result) == "string") {
- return "Division by zero! At Line:" + (i + 1);
- }
- }
- return result;
- }
- function calculate(text, func) {
- var result = 0;
- var expressionWithEmpty = text.split(' ');
- var expression = [];
- for (var i = 0; i < expressionWithEmpty.length; i++) {
- if (expressionWithEmpty[i] != "") {
- expression.push(expressionWithEmpty[i]);
- }
- }
- var start = 1;
- if (expression[0] == "def") {
- start = 2;
- }
- for (var i = start; i < expression.length; i++) {
- if (expression[i].match(/^[0-9]+$/)) {
- expression[i] = parseInt(expression[i]);
- } else {
- expression[i] = func[expression[i]];
- }
- }
- switch (expression[0]) {
- case "def":
- func[expression[1]] = expression[2];
- return;
- case "+":
- for (var j = 1; j < expression.length; j++) {
- result += expression[j];
- }
- break;
- case "-":
- result = expression[1];
- for (var j = 2; j < expression.length; j++) {
- result -= expression[j];
- }
- break;
- case "*":
- result = 1;
- for (var j = 1; j < expression.length; j++) {
- result *= expression[j];
- }
- break;
- case "/":
- result = expression[1];
- for (var j = 2; j < expression.length; j++) {
- if (expression[j] == 0) {
- return "Division by zero! At Line:";
- }
- result = parseInt(result / expression[j]);
- }
- break;
- default:
- break;
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement