diff --git a/Queue.rb b/Queue.rb index 8bf0e024..99a50536 100644 --- a/Queue.rb +++ b/Queue.rb @@ -1,13 +1,23 @@ class Queue + attr_reader :store def initialize + @store = Array.new end - + def dequeue + @store.shift end - + def enqueue(element) + @store << element end - + def size + @store.length end + + def empty? + size == 0 + end + end diff --git a/Stack.rb b/Stack.rb index 413f3a81..eb8ab527 100644 --- a/Stack.rb +++ b/Stack.rb @@ -1,14 +1,23 @@ class Stack + attr_reader :store def initialize @store = Array.new end - + def pop + @store.pop end - + def push(element) + @store << element end - + def size + @store.length end + + def empty? + size == 0 + end + end diff --git a/job-simulation.rb b/job-simulation.rb index 67230b1d..9e86d0a2 100644 --- a/job-simulation.rb +++ b/job-simulation.rb @@ -1,4 +1,42 @@ require './Stack.rb' require './Queue.rb' +waiting = Queue.new +workers = Stack.new +workers.push('one') +workers.push('two') +workers.push('three') +workers.push('four') +workers.push('five') +workers.push('six') + +waiting.enqueue("seven") +waiting.enqueue("eight") +waiting.enqueue("nine") +waiting.enqueue("ten") + +def roll + rand(1..6) +end + +def rehire(workers, waiting) + num = roll + num.times do + fired = workers.pop + waiting.enqueue(fired) + end + num.times do + hired = waiting.dequeue + workers.push(hired) + end + #i'm going to puts num here so that you i can easily see the results of the roll + puts "#{num} was rolled." +end + +rehire(workers, waiting) +puts "Current workers: #{workers.store}" +puts "On the wait list: #{waiting.store}" +rehire(workers, waiting) +puts "Current workers: #{workers.store}" +puts "On the wait list: #{waiting.store}"