Created
August 3, 2022 02:59
-
-
Save tuanlc/45f4463a23e0dce958ee15dc3a9bb0d4 to your computer and use it in GitHub Desktop.
Solution for number of carries when sum 2 numbers in Javascript
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
| numberOfCarryOperations(1234, 5678); //2 | |
| numberOfCarryOperations(5555, 5555); //4 | |
| numberOfCarryOperations(123, 456); //0 | |
| function numberOfCarryOperations(a, b) { | |
| const revertedArrayOfDigitOfA = pushNumberToStack(a).reverse(); | |
| const revertedArrayOfDigitOfB = pushNumberToStack(b).reverse(); | |
| const numberOfCaries = calculateNumberOfCarryOperations({ | |
| arrayOfDigitA: revertedArrayOfDigitOfA, | |
| arrayOfDigitB: revertedArrayOfDigitOfB, | |
| carryNumber: 0, | |
| index: 0, | |
| maxLength: Math.max(revertedArrayOfDigitOfA.length, revertedArrayOfDigitOfB.length), | |
| numberOfCarries: 0, | |
| }); | |
| console.log('numberOfCaries', numberOfCaries); | |
| } | |
| function calculateNumberOfCarryOperations(options) { | |
| const { arrayOfDigitA, arrayOfDigitB, carryNumber, index, maxLength, numberOfCarries } = options; | |
| if (index === maxLength) return numberOfCarries; | |
| const aDigit = arrayOfDigitA[index] || 0; | |
| const bDigit = arrayOfDigitB[index] || 0; | |
| let nextCarryNumber = 0; | |
| let nextNumberOfCarries = numberOfCarries; | |
| if ((aDigit + bDigit + carryNumber) >= 10) { | |
| nextCarryNumber = Math.floor((aDigit + bDigit + carryNumber) / 10); | |
| nextNumberOfCarries ++; | |
| } | |
| return calculateNumberOfCarryOperations({ | |
| arrayOfDigitA, | |
| arrayOfDigitB, | |
| carryNumber: nextCarryNumber, | |
| index: index + 1, | |
| maxLength, | |
| numberOfCarries: nextNumberOfCarries | |
| }); | |
| } | |
| function pushNumberToStack(number) { | |
| const numberInString = `${number}`; | |
| const arrayOfDigit = numberInString.split('').map(char => +char); | |
| return arrayOfDigit; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment