中置記法を後置記法に変換するプログラム
https://www.spoj.pl/problems/ONP/を解くために書いたRubyのコードを、後々使えそうだからポストする。
$priority = [[['+',0],['-',1],['*',2],['/',3],['^',4]]] def recur(s, idx) op_stack = Array.new p = idx while p < s.length c = s[p].chr case c when 'a'..'z' print c when '(' p = recur(s, p+1) when ')' until op_stack.empty? print op_stack.pop end return p else while !op_stack.empty? && $priority[op_stack.last] > $priority[c] print op_stack.pop end op_stack.push c end p += 1 end until op_stack.empty? print op_stack.pop end end T = gets.to_i T.times do s = gets.chomp recur(s, 0) puts end