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