JSFiddle - React, Tailwind, and code Playground
by shtrih
HTML
<div id="log">
</div>
CSS
pre {
margin: 0;
padding: 0.5em;
background-color: #fff6;
}
pre:nth-child(odd) {
background-color: #eee6;
}
JavaScript
var table_of_truth = (form1, form2, token_count) => {
let cycles = Math.pow(2, token_count),
result = '',
alphabet = 'abcdefghijklmnopqrstuvwxyz',
header = '<pre>',
is_header_filled = false,
normalize_form = (form, vars) => {
let result = form;
for(let char in vars) {
result = result.replace(new RegExp(char, 'g'), 'vars["' + char + '"]');
}
return result
}
;
for (let i = 0; i < cycles; i++) {
const vars = {};
result += '<pre>';
for (let char, pow, k = 0, j = token_count; j > 0; j--) {
char = alphabet.charAt(k++);
if (!is_header_filled) {
header += char + ' ';
}
pow = Math.pow(2, j);
vars[char] = (i % pow > (pow / 2 - 1));
result += ~~vars[char];
result += ' ';
}
result += ' ';
result += ~~eval(normalize_form(form1, vars));
result += ' ' + ' '.repeat(form1.length);
result += ~~eval(normalize_form(form2, vars));
is_header_filled = true;
result += '</pre>';
}
header += ' (' + form1 + ') (' + form2 + ')';
header += '</pre>';
document.getElementById("log").innerHTML = header + result;
}
table_of_truth('!a & (b || !c) || a & !c', '!a & b || !c', 3);