| 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: |
|
| Description: |
- 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
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]"
|