本履歴

購入した古本の履歴と時々プログラミング

プログラミングコンテストの練習

世界で闘うプログラミング力を鍛える150問 ~トップIT企業のプログラマになるための本~に載っていた問題をRubyで。
こういうパズル的な問題面白いなあ。

class Stack
	def initialize
		@stack=[]
	end
	
	def push(n)
		@stack.push(n)
	end
	
	def pop
		@stack.pop
	end
end

class Queue
	def initialize
		@s1=Stack.new
		@s2=Stack.new #rev
	end
	
	def push(n)
		@s1.push(n)
	end
	
	def pop
		ret=@s2.pop
		unless ret
			while n=@s1.pop
				@s2.push(n)
			end
			ret=@s2.pop
		end
		ret
	end
end

q=Queue.new
q.push 1
q.push 2
q.push 3
q.push 4
p q.pop
p q.pop
q.push 5
p q.pop
p q.pop
q.push 6
q.push 7
p q.pop