cleanup & bugfixes
This commit is contained in:
parent
99dbd942f9
commit
00a0638ee4
1 changed files with 37 additions and 35 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
# $Dwarf: intspan.rb,v 1.15 2004/06/16 08:13:35 ward Exp $
|
# $Dwarf: intspan.rb,v 1.16 2005/03/09 14:22:52 ward Exp $
|
||||||
# $Source$
|
# $Source$
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -51,8 +51,8 @@ def copy(set_spec)
|
||||||
when "Array"
|
when "Array"
|
||||||
print "copy: Calling _copy_array\n" if Debuglevel > 0
|
print "copy: Calling _copy_array\n" if Debuglevel > 0
|
||||||
_copy_array(set_spec)
|
_copy_array(set_spec)
|
||||||
when "Set::Intspan"
|
when "Set::IntSpan"
|
||||||
print "copy: Calling _copy_set\n"
|
print "copy: Calling _copy_set\n" if Debuglevel > 0
|
||||||
_copy_set(set_spec)
|
_copy_set(set_spec)
|
||||||
when "Hash"
|
when "Hash"
|
||||||
print "copy: Calling _copy_set\n"
|
print "copy: Calling _copy_set\n"
|
||||||
|
|
@ -62,16 +62,18 @@ def copy(set_spec)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def _copy_empty # makes @set the empty se
|
def _copy_empty # makes @set the empty set
|
||||||
@set = { "negInf" => false }
|
@set = {}
|
||||||
@set["posInf"] = false
|
set_neg_inf(false)
|
||||||
|
set_pos_inf(false)
|
||||||
@set["edges"] = []
|
@set["edges"] = []
|
||||||
@set["run"] = []
|
@set["run"] = []
|
||||||
end
|
end
|
||||||
|
|
||||||
def _copy_array(array) # copies an array into @set
|
def _copy_array(array) # copies an array into @set
|
||||||
@set["negInf"] = false
|
_copy_empty
|
||||||
@set["posInf"] = false
|
set_neg_inf(false)
|
||||||
|
set_pos_inf(false)
|
||||||
|
|
||||||
#print "scary thingy gets called!!!\n"
|
#print "scary thingy gets called!!!\n"
|
||||||
edges = []
|
edges = []
|
||||||
|
|
@ -90,14 +92,14 @@ def _copy_array(array) # copies an array into @set
|
||||||
end
|
end
|
||||||
|
|
||||||
def _copy_set(src) # copies one set to another
|
def _copy_set(src) # copies one set to another
|
||||||
@set["negInf"] = src.neg_inf?
|
_copy_empty
|
||||||
@set["posInf"] = src.pos_inf?
|
set_neg_inf(src.neg_inf?)
|
||||||
|
set_pos_inf(src.pos_inf?)
|
||||||
@set["edges"] = src.edges
|
@set["edges"] = src.edges
|
||||||
@set["run"] = []
|
@set["run"] = []
|
||||||
end
|
end
|
||||||
|
|
||||||
def _copy_run_list(runlist)
|
def _copy_run_list(runlist)
|
||||||
|
|
||||||
_copy_empty
|
_copy_empty
|
||||||
|
|
||||||
runlist.gsub!(/\s|_/, '')
|
runlist.gsub!(/\s|_/, '')
|
||||||
|
|
@ -256,7 +258,7 @@ def run_list
|
||||||
end
|
end
|
||||||
|
|
||||||
def elements
|
def elements
|
||||||
if (@set["negInf"] == true or @set["posInf"] == true)
|
if (neg_inf? or pos_inf?)
|
||||||
print "Set::IntSpan::elements: infinite set\n"
|
print "Set::IntSpan::elements: infinite set\n"
|
||||||
exit
|
exit
|
||||||
end
|
end
|
||||||
|
|
@ -281,13 +283,13 @@ def union(set_spec)
|
||||||
b = _real_set(set_spec)
|
b = _real_set(set_spec)
|
||||||
s = IntSpan.new
|
s = IntSpan.new
|
||||||
|
|
||||||
s.set_neg_inf(@set["negInf"] || b.neg_inf?)
|
s.set_neg_inf(neg_inf? || b.neg_inf?)
|
||||||
|
|
||||||
eA = @set["edges"]
|
eA = @set["edges"]
|
||||||
eB = b.edges
|
eB = b.edges
|
||||||
eS = s.edges
|
eS = s.edges
|
||||||
|
|
||||||
inA = @set["negInf"]
|
inA = neg_inf?
|
||||||
inB = b.neg_inf?
|
inB = b.neg_inf?
|
||||||
|
|
||||||
iA = 0
|
iA = 0
|
||||||
|
|
@ -317,7 +319,7 @@ def union(set_spec)
|
||||||
iA < eA.length and (! inB) and eS.concat(eA[iA..eA.length])
|
iA < eA.length and (! inB) and eS.concat(eA[iA..eA.length])
|
||||||
iB < eB.length and (! inA) and eS.concat(eB[iB..eB.length])
|
iB < eB.length and (! inA) and eS.concat(eB[iB..eB.length])
|
||||||
|
|
||||||
s.set_pos_inf(@set["posInf"] || b.pos_inf?)
|
s.set_pos_inf(pos_inf? || b.pos_inf?)
|
||||||
s.set_edges(eS)
|
s.set_edges(eS)
|
||||||
|
|
||||||
return s
|
return s
|
||||||
|
|
@ -327,13 +329,13 @@ def intersect(set_spec)
|
||||||
b = _real_set(set_spec)
|
b = _real_set(set_spec)
|
||||||
s = IntSpan.new
|
s = IntSpan.new
|
||||||
|
|
||||||
s.set_neg_inf(@set["negInf"] && b.neg_inf?)
|
s.set_neg_inf(neg_inf? && b.neg_inf?)
|
||||||
|
|
||||||
eA = @set["edges"]
|
eA = @set["edges"]
|
||||||
eB = b.edges
|
eB = b.edges
|
||||||
eS = s.edges
|
eS = s.edges
|
||||||
|
|
||||||
inA = @set["negInf"]
|
inA = neg_inf?
|
||||||
inB = b.neg_inf?
|
inB = b.neg_inf?
|
||||||
|
|
||||||
iA = 0
|
iA = 0
|
||||||
|
|
@ -363,7 +365,7 @@ def intersect(set_spec)
|
||||||
iA < eA.length and inB and eS.concat(eA[iA..eA.length])
|
iA < eA.length and inB and eS.concat(eA[iA..eA.length])
|
||||||
iB < eB.length and inA and eS.concat(eB[iB..eB.length])
|
iB < eB.length and inA and eS.concat(eB[iB..eB.length])
|
||||||
|
|
||||||
s.set_neg_inf(@set["posInf"] && b.pos_inf?)
|
s.set_neg_inf(pos_inf? && b.pos_inf?)
|
||||||
s.set_edges(eS)
|
s.set_edges(eS)
|
||||||
return s
|
return s
|
||||||
end
|
end
|
||||||
|
|
@ -372,13 +374,13 @@ def diff (set_spec)
|
||||||
b = _real_set(set_spec)
|
b = _real_set(set_spec)
|
||||||
s = IntSpan.new
|
s = IntSpan.new
|
||||||
|
|
||||||
s.set_neg_inf(@set["negInf"] && ! b.neg_inf?)
|
s.set_neg_inf(neg_inf? && ! b.neg_inf?)
|
||||||
|
|
||||||
eA = @set["edges"]
|
eA = @set["edges"]
|
||||||
eB = b.edges
|
eB = b.edges
|
||||||
eS = s.edges
|
eS = s.edges
|
||||||
|
|
||||||
inA = @set["negInf"]
|
inA = neg_inf?
|
||||||
inB = b.neg_inf?
|
inB = b.neg_inf?
|
||||||
|
|
||||||
iA = 0
|
iA = 0
|
||||||
|
|
@ -410,7 +412,7 @@ def diff (set_spec)
|
||||||
|
|
||||||
s.set_edges(eS)
|
s.set_edges(eS)
|
||||||
|
|
||||||
s.set_pos_inf(@set["posInf"] && ! b.pos_inf?)
|
s.set_pos_inf(pos_inf? && ! b.pos_inf?)
|
||||||
return s
|
return s
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -418,7 +420,7 @@ def xor(set_spec)
|
||||||
b = _real_set(set_spec)
|
b = _real_set(set_spec)
|
||||||
s = IntSpan.new
|
s = IntSpan.new
|
||||||
|
|
||||||
s.set_neg_inf(@set["negInf"] ^ b.neg_inf?)
|
s.set_neg_inf(neg_inf? ^ b.neg_inf?)
|
||||||
|
|
||||||
eA = @set["edges"]
|
eA = @set["edges"]
|
||||||
eB = b.edges
|
eB = b.edges
|
||||||
|
|
@ -446,7 +448,7 @@ def xor(set_spec)
|
||||||
iA < eA.length and eS.concat(eA[iA..eA.length])
|
iA < eA.length and eS.concat(eA[iA..eA.length])
|
||||||
iB < eB.length and eS.concat(eB[iB..eB.length])
|
iB < eB.length and eS.concat(eB[iB..eB.length])
|
||||||
|
|
||||||
s.set_pos_inf(@set["posInf"] ^ b.pos_inf?)
|
s.set_pos_inf(pos_inf? ^ b.pos_inf?)
|
||||||
s.set_edges(eS)
|
s.set_edges(eS)
|
||||||
return s
|
return s
|
||||||
end
|
end
|
||||||
|
|
@ -498,9 +500,9 @@ def equal(set_spec)
|
||||||
b = _real_set(set_spec)
|
b = _real_set(set_spec)
|
||||||
|
|
||||||
print "a\n"
|
print "a\n"
|
||||||
@set["negInf"] == b.neg_inf? or return false
|
neg_inf? == b.neg_inf? or return false
|
||||||
print "b\n"
|
print "b\n"
|
||||||
@set["posInf"] == b.pos_inf? or return false
|
pos_inf? == b.pos_inf? or return false
|
||||||
|
|
||||||
aEdge = @set["edges"]
|
aEdge = @set["edges"]
|
||||||
bEdge = b.edges
|
bEdge = b.edges
|
||||||
|
|
@ -523,7 +525,7 @@ end
|
||||||
|
|
||||||
|
|
||||||
def cardinality
|
def cardinality
|
||||||
(@set["negInf"] or @set["posInf"]) and return -1
|
(neg_inf? or pos_inf?) and return -1
|
||||||
|
|
||||||
car = 0
|
car = 0
|
||||||
edges = @set["edges"]
|
edges = @set["edges"]
|
||||||
|
|
@ -546,7 +548,7 @@ def empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
def finite
|
def finite
|
||||||
if @set["negInf"] == false and @set["posInf"] == false
|
if ! neg_inf? and ! pos_inf?
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
|
|
@ -577,15 +579,15 @@ def set_pos_inf(posInf)
|
||||||
end
|
end
|
||||||
|
|
||||||
def infinite
|
def infinite
|
||||||
@set["negInf"] or @set["posInf"]
|
return neg_inf? || pos_inf?
|
||||||
end
|
end
|
||||||
|
|
||||||
def universal
|
def universal
|
||||||
@set["negInf"] and not @set["edges"].length > 0 and @set["posInf"]
|
neg_inf? and not @set["edges"].length > 0 and pos_inf?
|
||||||
end
|
end
|
||||||
|
|
||||||
def member(n)
|
def member(n)
|
||||||
inSet = @set["negInf"]
|
inSet = neg_inf?
|
||||||
edge = @set["edges"]
|
edge = @set["edges"]
|
||||||
|
|
||||||
for i in (0...edge.length)
|
for i in (0...edge.length)
|
||||||
|
|
@ -602,7 +604,7 @@ def member(n)
|
||||||
end
|
end
|
||||||
|
|
||||||
def insert(n)
|
def insert(n)
|
||||||
inSet = @set["negInf"]
|
inSet = neg_inf?
|
||||||
edge = @set["edges"]
|
edge = @set["edges"]
|
||||||
|
|
||||||
if (edge.length == 0)
|
if (edge.length == 0)
|
||||||
|
|
@ -657,7 +659,7 @@ end
|
||||||
def remove(n)
|
def remove(n)
|
||||||
n or return
|
n or return
|
||||||
|
|
||||||
inSet = @set["negInf"]
|
inSet = neg_inf?
|
||||||
edge = @set["edges"]
|
edge = @set["edges"]
|
||||||
|
|
||||||
for i in (0...edge.length)
|
for i in (0...edge.length)
|
||||||
|
|
@ -713,7 +715,7 @@ def max
|
||||||
end
|
end
|
||||||
|
|
||||||
def grep_set(block)
|
def grep_set(block)
|
||||||
return nil if @set["negInf"] or @set["posInf"]
|
return nil if neg_inf? or pos_inf?
|
||||||
|
|
||||||
edges = @set["edges"]
|
edges = @set["edges"]
|
||||||
sub_edges = []
|
sub_edges = []
|
||||||
|
|
@ -741,7 +743,7 @@ def grep_set(block)
|
||||||
end
|
end
|
||||||
|
|
||||||
def map_set(block)
|
def map_set(block)
|
||||||
return nil if @set["negInf"] or @set["posInf"]
|
return nil if neg_inf? or pos_inf?
|
||||||
|
|
||||||
map_set = new
|
map_set = new
|
||||||
|
|
||||||
|
|
@ -786,7 +788,7 @@ def start(startval)
|
||||||
set["iterator"] = nil
|
set["iterator"] = nil
|
||||||
startval or return nil
|
startval or return nil
|
||||||
|
|
||||||
inSet = @set["negInf"]
|
inSet = neg_inf?
|
||||||
edges = @set["edges"]
|
edges = @set["edges"]
|
||||||
|
|
||||||
for i in (0...edges.length)
|
for i in (0...edges.length)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue