ちなみに

火曜日の空は僕を押しつぶした。

逆ポーランド記法ってなに?

昨日のエントリーで自分の中に発生した疑問をぬるく解決!

Re: 後置記法での計算の添削に便乗してみた - チナミニ

逆ポーランド記法(ぎゃくポーランドきほう、英語:Reverse Polish Notation, RPN)とは、演算子を操作対象の後に記述する記法。後置記法 (Postfix Notation) とも言う。

逆ポーランド記法 - Wikipedia

つまりは

2 + 3 #=> 5

2 3 + #=> 5

と書く訳ですね。

プログラムで実現するときはスタックを用いるのが一般的です。

昨日の問題

では、この記法で以下のような式を計算するといくらになるか。

2 3 4 +

演算子が出てきた段階で、それ以前の値を全て計算すると、

9

直前の2つの組に対して計算すると、

2 7

つまり、結果は

2

これは一体どっちが正解なのか。

シンプルな例題で考えてみる

(2+3)*(2+2) #=> 20

2 3 + 2 2 + * #=> ??

前者の方法で計算すると、

5 2 2 + *
9 *
9

後者の方法で計算すると、

5 2 2 + *
5 4 *
20

ということは後者が正しいみたい。

結論

目的はプログラムであって、RPNではないのでどっちでも良い!