読者です 読者をやめる 読者になる 読者になる

Rubyでスタックを扱う

Ruby アルゴリズム

Arrayをスタックとして扱えるので簡単
Array#pushで末尾に追加、Array#popで末尾から取り出し
例として逆ポーランド記法で与えられた数式を計算する

1 2 + 3 4 - *

を入力

input = gets.chomp.split(' ')
stack = []

input.each do |c|
  case c
  when '+'
    a = stack.pop
    b = stack.pop
    stack.push(b + a)
  when '-'
    a = stack.pop
    b = stack.pop
    stack.push(b - a)
  when '*'
    a = stack.pop
    b = stack.pop
    stack.push(b * a)
  else
    stack.push(c.to_i)
  end
end

puts stack

出力は-3となる