class LogicTools::SameXImplicants

Represents a group of implicants with only singletons, sortable by number of ones.

Public Class Methods

new() click to toggle source

Creates a group of implicants.

# File lib/logic_tools/logicsimplify_qm.rb, line 174
def initialize
    @implicants = []
    @singletons =  Set.new # Set used for ensuring each implicant is
                           # present only once in the group
end

Public Instance Methods

<<(implicant)
Alias for: add
[](i) click to toggle source

Gets implicant i.

# File lib/logic_tools/logicsimplify_qm.rb, line 191
def [](i)
    @implicants[i]
end
add(implicant) click to toggle source

Adds implicant to the group.

# File lib/logic_tools/logicsimplify_qm.rb, line 196
def add(implicant)
    # Nothing to do if +implicant+ is already present.
    return if @singletons.include?(implicant.bits)
    @implicants << implicant
    @singletons.add(implicant.bits.dup)
end
Also aliased as: <<
each(&blk) click to toggle source

Iterates over the implicants of the group.

# File lib/logic_tools/logicsimplify_qm.rb, line 186
def each(&blk)
    @implicants.each(&blk)
end
size() click to toggle source

Gets the number of implicants of the group.

# File lib/logic_tools/logicsimplify_qm.rb, line 181
def size
    @implicants.size
end
sort!() click to toggle source

Sort the implicants by number of ones.

# File lib/logic_tools/logicsimplify_qm.rb, line 206
def sort!
    @implicants.sort_by! {|implicant| implicant.count }
end