]> git.wincent.com - hextrapolate.git/blob - src/addDigits.js
4a3de34e1a85c21f30e9919630fa45b3aa77c783
[hextrapolate.git] / src / addDigits.js
1 /**
2  * Copyright 2015-present Greg Hurrell. All rights reserved.
3  * Licensed under the terms of the MIT license.
4  *
5  * @flow
6  */
7
8 'use strict';
9
10 export default function addDigits(
11   aDigits: Array<number>,
12   bDigits: Array<number>,
13   base: number
14 ): Array<number> {
15   let result = [];
16   let carry = 0;
17   for (
18     let i = 0, max = Math.max(aDigits.length, bDigits.length);
19     i < max || carry;
20     i++
21   ) {
22     const aDigit = aDigits[i] || 0;
23     const bDigit = bDigits[i] || 0;
24     const sum = aDigit + bDigit + carry;
25     result.push(sum % base);
26     carry = Math.floor(sum / base);
27   }
28   return result.length ? result : [0];
29 }