| Class | TruthTable |
| In: |
truthtable/qm.rb
truthtable.rb |
| Parent: | Object |
The truthtable library generates a truth table from a logical formula written in Ruby. The truth table can be converted to a logical formula.
Tanaka Akira <akr@fsij.org>
require 'truthtable'
puts TruthTable.new {|v| v[0] & v[1] }
#=>
v[0] v[1] |
----------+--
f f | f
f t | f
t f | f
t t | t
p TruthTable.new {|v| v[0] & v[1] }
#=> #<TruthTable: !v[0]&!v[1]=>false !v[0]&v[1]=>false v[0]&!v[1]=>false v[0]&v[1]=>true>
require 'pp'
pp TruthTable.new {|v| v[0] & v[1] }
#=>
#<TruthTable:
!v[0]&!v[1]=>false
!v[0]& v[1]=>false
v[0]&!v[1]=>false
v[0]& v[1]=>true>
p TruthTable.new {|v| v[0] }.formula #=>"v[0]"
p TruthTable.new {|v| !v[0] }.formula #=> "!v[0]"
p TruthTable.new {|v| true ^ 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]"
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] : v[1] }.formula #=> "!v[0]&v[1] | v[0]&!v[1]"
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]"