Advertisement
dimipan80

Sum of Two Huge Numbers

Nov 19th, 2014
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Write a JavaScript function sumTwoHugeNumbers(value) that accepts as parameter an array containing
  2. the two numbers. The input numbers are represented as strings. You are not allowed to use external libraries.
  3. The result should be printed on the console. */
  4.  
  5. "use strict";
  6.  
  7. function sumTwoHugeNumbers(arr) {
  8.     if (!arr[0].length || !arr[1].length ||
  9.         arr[0] != Number(arr[0]) || arr[1] != Number(arr[1])) {
  10.         return undefined + ' - invalid input!';
  11.     }
  12.  
  13.     var firstNumArr = arr[0].split('').filter(Boolean);
  14.     var secondNumArr = arr[1].split('').filter(Boolean);
  15.  
  16.     if (firstNumArr.length != secondNumArr.length) {
  17.         var numAddingZeroes = Math.abs(firstNumArr.length - secondNumArr.length);
  18.         if (firstNumArr.length > secondNumArr.length) {
  19.             do {
  20.                 secondNumArr.unshift('0');
  21.                 numAddingZeroes--;
  22.             } while (numAddingZeroes);
  23.         } else {
  24.             do {
  25.                 firstNumArr.unshift('0');
  26.                 numAddingZeroes--;
  27.             } while (numAddingZeroes);
  28.         }
  29.     }
  30.  
  31.     var tempAdd = 0;
  32.     for (var i = firstNumArr.length - 1; i >= 0; i -= 1) {
  33.         var num1 = parseInt(firstNumArr[i]);
  34.         var num2 = parseInt(secondNumArr[i]);
  35.         var sum = num1 + num2 + tempAdd;
  36.         (sum > 9) ? tempAdd = 1 : tempAdd = 0;
  37.         sum = sum.toString(10);
  38.         if (i) {
  39.             sum = sum[sum.length - 1];
  40.         }
  41.         firstNumArr[i] = sum;
  42.     }
  43.  
  44.     return firstNumArr.join('');
  45. }
  46.  
  47. console.log(sumTwoHugeNumbers(['155', '65']));
  48. console.log(sumTwoHugeNumbers(['123456789', '123456789']));
  49. console.log(sumTwoHugeNumbers(['887987345974539','4582796427862587']));
  50. console.log(sumTwoHugeNumbers(['347135713985789531798031509832579382573195807',
  51.         '817651358763158761358796358971685973163314321']));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement