昨日のエントリーで自分の中に発生した疑問をぬるく解決!
逆ポーランド記法(ぎゃくポーランドきほう、英語: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ではないのでどっちでも良い!