Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. # Define Queue class
  2. class BasicQueue
  3. attr_reader :inner
  4. attr_reader :outer
  5.  
  6. def initialize
  7. @inner, @outer = [], []
  8. end
  9.  
  10. def q(value)
  11. @inner << value
  12. end
  13.  
  14. def front
  15. inner.first
  16. end
  17.  
  18. def dq
  19. @inner = @inner.drop(1)
  20. end
  21.  
  22. def <<(directive)
  23. @outer << directive
  24. end
  25.  
  26. def call
  27. former = inner
  28. outer.each do |dir|
  29. case dir.first
  30. when :enqueue
  31. q(dir.last)
  32. when :dequeue
  33. dq
  34. when :printout
  35. puts front
  36. end
  37. end
  38. inner = former
  39. end
  40. end
  41.  
  42. # Get from STDIN
  43. q_count = gets.chomp.to_i
  44. queries = []
  45.  
  46. q_count.times { queries << gets.chomp }
  47.  
  48. # Convert input to Directives
  49. queries.map! do |q|
  50. op = q.chars.first.to_i
  51. case op
  52. when 1
  53. [:enqueue, q.split(' ')[1]]
  54. when 2
  55. [:dequeue]
  56. when 3
  57. [:printout]
  58. end
  59. end
  60.  
  61. # Instantiate a BasicQueue
  62. @q = BasicQueue.new
  63.  
  64. #Add each Query to the Queue
  65. queries.each { |r| @q << r }
  66.  
  67. #And resolve them!
  68. @q.()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement