逆ポーランド記法
数学的な演算を簡単にするのに逆ポーランド記法があります。
逆ポーランド記法では、「1 + 2」という書き方を「1 2 +」というように演算子を数字の後ろに記述します。
逆ポーランド記法で表現されたものはスタックで処理しやすいという特徴があります。
先頭から順に読み込んで、数であればスタックに積み、演算子であればスタックから値を2つ取り出して計算した結果をまたスタックに積む、という操作を繰り返すだけで計算ができます。
ソースコード
「4 * (8 + 2) - (3 -1) * 4」という数式を逆ポーランド記法で表現すると「4 8 2 + * 3 1 - 4 * -」となります。
これを計算するソースコードは次のようになります。
[Google Colaboratory]
1 | def calc(s): |
[実行結果]
[] [4] [4, 8] [4, 8, 2] [4, 10] [40] [40, 3] [40, 3, 1] [40, 2] [40, 2, 4] [40, 8] 解: 32
解は 32 となり「4 * (8 + 2) - (3 -1) * 4」の計算結果として正しいことが確認できます。