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);
};