class ResizingIntSet
Attributes
count[R]
Public Class Methods
new(num_buckets = 20)
click to toggle source
# File lib/simms_structures/int_set.rb, line 61 def initialize(num_buckets = 20) @store = Array.new(num_buckets) { Array.new } @count = 0 end
Public Instance Methods
include?(num)
click to toggle source
# File lib/simms_structures/int_set.rb, line 79 def include?(num) self[num].include?(num) end
insert(num)
click to toggle source
# File lib/simms_structures/int_set.rb, line 66 def insert(num) resize! if @count == num_buckets self[num] << num unless include?(num) @count += 1 end
remove(num)
click to toggle source
# File lib/simms_structures/int_set.rb, line 72 def remove(num) if include?(num) self[num].delete(num) @count -= 1 end end
Private Instance Methods
[](num)
click to toggle source
# File lib/simms_structures/int_set.rb, line 85 def [](num) @store[num % num_buckets] end
num_buckets()
click to toggle source
# File lib/simms_structures/int_set.rb, line 89 def num_buckets @store.length end
resize!()
click to toggle source
# File lib/simms_structures/int_set.rb, line 93 def resize! old_store = @store new_num_buckets = num_buckets * 2 @store = Array.new(new_num_buckets) { Array.new } @count = 0 old_store.each do |bucket| bucket.each { |num| insert(num) } end end