Print truth table

Prints the truth table for a given list of arguments and a function.

by Santiago J

CSS

body {
    font-family: consolas, monospace;
}

JavaScript

window.console = window.console || {log:function(){}};

function logfmt(args, res) {
    var str = args.join(" ") + " | " + res;
    console.log(str);
    document.body.innerHTML += str + "<br>";
}

function truth(args, f) {
    var nargs = args.length,
        combinations = 1 << nargs,
        i;
    
    logfmt(args, "f(args)"); // header
    
    for (i = 0; i < combinations; i++) {
        var argvals = [],
            mask = 1,
            j = nargs;

        while (j-- > 0) {
            argvals.push(i & mask ? 1 : 0);
            mask = mask << 1;
        }

        logfmt(argvals, f.apply(null, argvals));
    }
}

window.onload = function(){
    // example with simple function that takes 3 arguments
    var args = ["a","b","c"]; // argument labels
    var f = function (a, b, c) { return a && b || c; };
    
    truth(args, f);
};