const multiply = (a, b) => { const stack = []; a = a.split``.reverse(); b = b.split``.reverse(); for (let i = 0, la = a.length; i < la; i++) { for (let j = 0, lb = b.length; j < lb; j++) { const m = a[i] * b[j]; const s = stack[i + j]; stack[i + j] = s ? s + m : m; } } for (let i = 0, l = stack.length; i < l; i++) { const move = Math.floor(stack[i] / 10); stack[i] = stack[i] % 10; if (stack[i + 1]) stack[i + 1] += move; else if (move > 0) stack[i + 1] = move; } return stack.reverse().join``.replace(/^(0(?!$))+/, ''); } //https://www.codewars.com/kata/multiplying-numbers-as-strings/javascript