RAA - truthtable

truthtable / 0.1

Short description: truth table and formula generator from Ruby block
Category: Library/Math
Status: proof of concept
Created: 2007-11-08 14:04:06 GMT
Last update: 2007-11-08 14:04:06 GMT
Owner: akr (Projects of this owner)
Homepage: http://www.a-k-r.org/truthtable/
Download: http://www.a-k-r.org/truthtable/
License: BSD
Dependency:
None
Description:

truthtable - truth table and formula generator from Ruby block

Feature

  • generate a truth table from a given block written in Ruby.
  • generate a formula from the table:
    • minimal one (obtained by Quine-McCluskey algorithm)
    • disjunctive normal form
    • conjunctive normal form

Usage

  • feature name for require

    require 'truthtable'

  • simple operators

    p TruthTable.new {|v| !v[0] }.formula        #=> "!v[0]"
    p TruthTable.new {|v| v[0] & v[1] }.formula  #=> "v[0]&v[1]"
    p TruthTable.new {|v| v[0] | v[1] }.formula  #=> "v[0] | v[1]"
    p TruthTable.new {|v| v[0] ^ v[1] }.formula  #=> "!v[0]&v[1] | v[0]&!v[1]"
    p TruthTable.new {|v| v[0] == v[1] }.formula #=> "!v[0]&!v[1] | v[0]&v[1]"
  • shortcuts, && and ||, are also usable but converted to & and |

    p TruthTable.new {|v| v[0] && v[1] }.formula #=> "v[0]&v[1]"
    p TruthTable.new {|v| v[0] || v[1] }.formula #=> "v[0] | v[1]"
  • actually any expression (without side effect)

    p TruthTable.new {|v| v[0] ? !v[1] : v[1] }.formula #=> "!v[0]&v[1] | v[0]&!v[1]"
  • any number of inputs

    p TruthTable.new {|v| [v[0], v[1], v[2], v[3]].grep(true).length <= 3 }.formula
    #=> "!v[0] | !v[1] | !v[2] | !v[3]"

Edit this project (for project owner)

back to RAA top