Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def priority(oper)
- case oper
- when '*','/'
- 2
- when '^'
- 3
- when '('
- 0
- when nil
- -1
- else
- 1
- end
- end
- def onpize(input)
- input = input.split(//)
- out = ''
- stack = []
- while !input.empty?
- elem = input.shift
- if 'abcdef0123456789'.include? elem
- out << elem
- elsif '+-*/^'.include? elem
- while priority(stack.last) >= priority(elem)
- puts [priority(elem), priority(stack.last)].join
- out << stack.pop
- end
- stack.push(elem)
- elsif elem == '('
- stack.push(elem)
- elsif elem == ')'
- while (elem2 = stack.pop) != '('
- out << elem2
- end
- end
- end
- while !stack.empty?
- out << stack.pop
- end
- puts
- out
- end
- puts onpize(gets.chomp)
- gets
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement