Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Define Queue class
- class BasicQueue
- attr_reader :inner
- attr_reader :outer
- def initialize
- @inner, @outer = [], []
- end
- def q(value)
- @inner << value
- end
- def front
- inner.first
- end
- def dq
- @inner = @inner.drop(1)
- end
- def <<(directive)
- @outer << directive
- end
- def call
- former = inner
- outer.each do |dir|
- case dir.first
- when :enqueue
- q(dir.last)
- when :dequeue
- dq
- when :printout
- puts front
- end
- end
- inner = former
- end
- end
- # Get from STDIN
- q_count = gets.chomp.to_i
- queries = []
- q_count.times { queries << gets.chomp }
- # Convert input to Directives
- queries.map! do |q|
- op = q.chars.first.to_i
- case op
- when 1
- [:enqueue, q.split(' ')[1]]
- when 2
- [:dequeue]
- when 3
- [:printout]
- end
- end
- # Instantiate a BasicQueue
- @q = BasicQueue.new
- #Add each Query to the Queue
- queries.each { |r| @q << r }
- #And resolve them!
- @q.()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement