Created
March 7, 2019 16:04
-
-
Save jjant/8deada0e372dbc18c683d835e31968c1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const getDigits = str => str.split("").map(digit => parseInt(digit, 10)); | |
| const stripZeros = digits => | |
| digits.length <= 1 ? digits : digits.replace(/^0*/, ""); | |
| const _addBignums = (num1, num2) => { | |
| const digits1 = getDigits(num1).reverse(); // [3, 2, 2] | |
| const digits2 = getDigits(num2).reverse(); // [4, 1] | |
| let carry = 0; // Me dice si debo agregar un carry en esta iteración | |
| const result = digits1.map((digit1, index) => { | |
| const digit2 = digits2[index] || 0; | |
| let resultDigit = digit1 + digit2 + carry; | |
| carry = 0; | |
| if (resultDigit >= 10) { | |
| carry = 1; | |
| resultDigit -= 10; | |
| } | |
| return resultDigit; | |
| }); | |
| if (carry) { | |
| result.push(1); | |
| } | |
| return result.reverse().join(""); | |
| }; | |
| const addBignums = (num1, num2) => { | |
| const num1_ = stripZeros(num1); | |
| const num2_ = stripZeros(num2); | |
| return num1_.length >= num2_.length | |
| ? _addBignums(num1_, num2_) | |
| : _addBignums(num2_, num1_); | |
| }; | |
| function sumStrings(a, b) { | |
| return addBignums(a, b); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment