背景
中置記法を逆ポーランド記法に変換するのは日本人なら小学生でもできるのに、それを知らない人が多い気がするので方法を書く。
逆ポーランド記法
逆ポーランド記法は、数式の記述方式の一つで、機械が処理しやすい記法なので大学とかで情報系に進むとどこかで出てくる。
例えば、以下の中置記法で記述された数式は、
$$ (3 + 5) * (2 - 1) $$
逆ポーランド記法では以下のようになる。
$$ 3 5 + 2 1 - * $$
真面目に変換するには、木構造を描いて葉要素から書き出していくみたいなことをするのだが、日本人ならそんなことをする必要はない。
そもそも逆ポーランド記法という名称は、ポーランド語がそんな感じの順序で記述する言語だったからついた名称だったはず(逆なのかもしれない)。そして日本語もポーランド語と似たような語順になるので、日本人ならややこしいことをせずに日本語で考えれば良い。
やりかた
以下の数式に対して、
$$ (3 + 5) * (2 - 1) $$
日本語の文章を考える。
3と5を足したものと、2から1を引いたものをかけ合わせる
日本語に出てきた数字と演算子を書き出す。
$$ 3 5 + 2 1 - * $$
これで逆ポーランド記法になる。
もう一つ例を見る。
$$ 3 + 4 * 5 \div (2 + 1) $$
日本語で文章を作る。
3と4と5を2と1を足したもので割ったものをかけて足す
(こんな曖昧な日本語では通じないというのは置いておいて)この文章で出てきた数字と演算子を書き出す。
$$ 3 4 5 2 1 + \div * + $$
簡単である。
テストで中置記法から逆ポーランド記法に変換せよという問題が出てきたら思い出して欲しい。
変換プログラムを書けと言われたら普通に頑張って。