…何か「+」より「-」の優先度を高くしないといけない気がする…。

 「5 + 4 * 3 + 2 / 6」を変換する際、

最後が

[5 4 3 * 2 6 /]{+ +}

になるんだけど、

「+」「-」の優先度を同じと仮定すると、

演算子の積まれ方・残り方は交換しても同じになるはずなので、



・「5 - 4 * 3 + 2 / 6」 → [5 4 3 * 2 6 /]{- +}

・「5 + 4 * 3 - 2 / 6」 → [5 4 3 * 2 6 /]{+ -}

の二つも成り立つはずだけど、

[5 4 3 * 2 6 /]{- +}はどうやっても、「5 - 4 * 3 + 2 / 6」にならない。*1



 でも、優先度が「-」>「+」ならば、

積算の直後に「-」が積まれて*2

「5 4 3 * - 2 6 / +」になるので、元の式と等しくなる。





…と思ったんだけど、どうなんだろ。





 ……いや待てよ、優先順位が同列だったら先に積んである方を出力すればいいのか…?

…むぅ…(汗)


*1:項の並び方の関係上、積算・除算の直後は「4*3+2/6」か「4*3-2/6」しかできないので。

*2:積算直後のスタックは{-+}。ここで優先順位の判断を行うと「-」>「+」より、「-を出力する」ということになる。