diff --git a/app/bitwise/calc.js b/app/bitwise/calc.js index e579e45..f37efa8 100644 --- a/app/bitwise/calc.js +++ b/app/bitwise/calc.js @@ -6,12 +6,12 @@ return Math.floor(Math.log(num) / Math.log(2)) + 1; }; - calc.maxNumberOfBits = function () { + calc.maxNumberOfBits = function (arr) { var counts = [], num; - for(var i=0;i>|\||\&|\^)(\d+)$/; + var twoOperandsRegex = /^(\d+)(<<|>>|\||\&|\^)(\d+)$/; + var numbersList = /^((\d*)+\s?)+$/; app.service('expression', { parse: function(string) { - var matches = twoOperandsRegex.exec(string); - if(matches == null) { - return null; + var trimmed = string.replace(/^\s+|\s+$/, ''); + var matches = twoOperandsRegex.exec(trimmed); + + if(matches != null) { + return createCalculableExpression(matches); } - return { - string:matches[0], - operand1: parseInt(matches[1], 10), - sign: matches[2], - operand2: parseInt(matches[3], 10), - result: function() { - return eval(string); - } + matches = numbersList.exec(string); + if(matches != null) { + return createListOfNumbersExpression(matches) } + } }); + function createCalculableExpression(matches) { + + var o1 = parseInt(matches[1], 10); + var o2 = parseInt(matches[3], 10); + + return { + string: matches.input, + operand1: o1, + sign: matches[2], + operand2: o2, + calculate: function() { + return eval(this.string); + } + } + } + + function createListOfNumbersExpression(matches) { + var numbers = [], i=0; + + for(;i