Project Euler Problem 13 - riemann79/hello-world GitHub Wiki

function digits(arr) {
    var n = arr.length;
    var m = arr[0].length;

    var carry = 0;
    var digits = [];

    // Sum each column.
    for(var k = 0; k < n; k++) {
        var sum = 0;

        for(var z = 0; z < m; z++) {
            sum += arr[k][z];
        }

        var cs = carry + sum;
        var digit = cs % 10;

        digits.push(digit);
        carry = Math.floor(cs / 10);
    }

    // Add the digits of the carry, if any.
    if(carry > 0) {
        var q = carry;
        var i = 1;

        while(q > 0) {
            var pow = Math.pow(10, i);
            
            digits.push(q % pow);
            q = Math.floor(q / pow);
            i++;
        }
    }

    digits.reverse();
    return digits;
}