Divide by 3 without operators

http://codegolf.stackexchange.com/questions/6836/divide-a-number-by-3-without-using-operators

by Andreas Renberg

HTML

<pre id="output"></pre>

JavaScript

function divBy3(num) {
    var numArray = String(num).split('');
    var prefix = (numArray[0] == "-") ? numArray.shift() : "";
    var resultStr = div(numArray, "0");
    return parseInt(prefix + resultStr);
}

function div(n, rem) {
    if (n.length <= 0) return ""; //"r" + rem;
    var quoVals = '000111222333444555666777888999'.split('');
    var remVals = '012012012012012012012012012012'.split('');
    var index = parseInt(rem + n.shift());
    return quoVals[index] + div(n, remVals[index]);
}

// ----- UNIT TESTING -----

function out()
{
    var args = Array.prototype.slice.call(arguments, 0);
    document.getElementById('output').innerHTML += args.join(" ") + "\n";
}

var numTests = 100;
var passedTests = 0;
for (i=0;i<100;i++) {
    var r = parseInt(Math.random() * 99999 - 50000);
    if (test(r))
    {
        out("PASS", r+"/3");
        passedTests++;
    }
    else
    {
        out("FAILED", r+"/3");
    }
}
out("Passed", passedTests, "of", numTests, "tests.");

function test(a) {
    return ( parseInt(a/3) == divBy3(a) );
}