Files

41 lines
1.0 KiB
JavaScript

// https://www.codewars.com/kata/multiplying-numbers-as-strings/train/javascript
function multiply(a, b) {
return a.split('').reduceRight((sum, d, i, arr) => {
return sumStrings(mul(b, +d) + '0'.repeat(arr.length - i - 1), sum);
}, '0');
}
// mltiple any big int (string) by one digit (0-9)
function mul(str, d) {
return d.toString(2).split('').reduceRight((obj, b) => {
let {res, last} = obj;
if (b === '1') res = sumStrings(res, last);
last = sumStrings(last, last);
return {res, last}
}, {res: '0', last: str}).res;
}
// https://www.codewars.com/kata/sum-strings-as-numbers
function sumStrings(aa,bb) {
let a = aa.split('').reverse();
let b = bb.split('').reverse();
let c = 0;
let r = [];
for (let i = 0; i < Math.max(a.length, b.length); ++i) {
let sum = (+a[i]|0) + (+b[i]|0) + c;
if (sum >= 10) {
r[i] = (sum - 10) + '';
c = 1;
} else {
r[i] = sum + '';
c = 0;
}
}
if (c) {
r.push('1');
}
return r.reverse().join('').replace(/^0*/, '') || '0';
}