class Algorithmable::Cups::StacksAndQueues::TripleStack

Constants

MAX_INT

Public Class Methods

new(size) click to toggle source
# File lib/algorithmable/cups/stacks_and_queues/triple_stack.rb, line 7
def initialize(size)
  @size = size + 1
  @pointers = [0, 0, 0]
  @array = Array.new (@size * 3)
  0.upto(2).each do |index|
    @array[@size * index] = MAX_INT
  end
end

Public Instance Methods

empty?(stack_num) click to toggle source
# File lib/algorithmable/cups/stacks_and_queues/triple_stack.rb, line 36
def empty?(stack_num)
  @pointers[stack_num].zero?
end
inspect() click to toggle source
# File lib/algorithmable/cups/stacks_and_queues/triple_stack.rb, line 40
def inspect
  "#<Stack @pointers=#{@pointers} @stacks=#{@array}>"
end
peek(stack_num) click to toggle source
# File lib/algorithmable/cups/stacks_and_queues/triple_stack.rb, line 31
def peek(stack_num)
  pointer = get_stack_pointer(stack_num)
  @array[pointer]
end
pop(stack_num) click to toggle source
# File lib/algorithmable/cups/stacks_and_queues/triple_stack.rb, line 23
def pop(stack_num)
  pointer = get_stack_pointer(stack_num)
  value = @array[pointer]
  @array[pointer] = nil
  @pointers[stack_num] -= 1
  value
end
push(stack_num, item) click to toggle source
# File lib/algorithmable/cups/stacks_and_queues/triple_stack.rb, line 16
def push(stack_num, item)
  pointer = get_stack_pointer(stack_num) + 1
  @pointers[stack_num] += 1
  @array[pointer] = item
  item
end

Private Instance Methods

get_stack_pointer(stack_num) click to toggle source
# File lib/algorithmable/cups/stacks_and_queues/triple_stack.rb, line 46
def get_stack_pointer(stack_num)
  @size * stack_num + @pointers[stack_num]
end