A simple, thrown-together library for displaying a truth table for boolean expressions.
You can use the provided command-line tool to display an arbitrary expression:
$ truth "A && B || C" Expression: A && B || C A B C | = ---------+--- f f f | f t f f | f f t f | f t t f | t f f t | t t f t | t f t t | t t t t | t
Or, you can do it programmatically:
require 'truth' table = Truth::Table.new("A && B || C") table.display
You can also generate
Karnaugh maps (K-maps).
From the command-line, just pass -k to the
truth tool to have it
display both the truth table and the K-map:
$ truth -k "A && B || C" Expression: A && B || C A B C | = ---------+--- f f f | f t f f | f f t f | f t t f | t f f t | t t f t | t f t t | t t t t | t AB 00 01 11 10 +--+--+--+--+ C 0 |0 |0 |1 |0 | +--+--+--+--+ 1 |1 |1 |1 |1 | +--+--+--+--+
require 'truth' table = Truth::Table.new("A && B || C") table.kmap.display
The parser is simplistic, but supports the following boolean operations:
A && B
A || B
A ^^ B
^^ operators have the same precedence, with
higher than either, and
! being highest of all.
Parentheses may be used to group expressions.
This was thrown together as a proof of concept, and is being made public primarily because I spent time on it and figured it might help someone else. There are not currently any tests (shame on me!) but I would gladly accept a pull request if someone is feeling ambitious.
This code is written by Jamis Buck firstname.lastname@example.org and is distributed under the MIT license (see the MIT-LICENSE file).