【Reverse Polish Notation; RPN】
ポーランドの数学者ウカシェヴィッチ(Jan Łukasiewicz)が1920年に提唱した数式の記述法(ポーランド記法、あるいは前置記法)を逆さにしたもので、演算子をその対象の後ろに記すもの。1950年代に計算機科学に紹介された。後置記法ともいう。発案者の名前にかかわらず、「逆ウカシェヴィッチ記法」とは呼ばれない。
例えば、通常の数式で「1 + 2」と記すところを、逆ポーランド記法では「1 2 +」と記す。見ての通り、これは奇しくも日本語の語順(「1と2との和」)に一致する。
とりあえず演算対象(オペランド)をスタックに積んでおいて、後から来る演算子にそれらを処理させればよいので、スタック型の演算装置と相性が良い。
ヒューレット・パッカード社の電卓が、この記法に従うものとして有名である(「逆ポーランド法計算機開発計画」をも見よ)。尚、ヒューレット・パッカード社のrpn電卓は、アニメ[ ロケットガール ]にも登場した。
というわけでスタックマシンを知ったので、四則演算のみであるが作ってみる。要は逆ポーランド記法の電卓であった。 下のコードは演算子に対してもEnterしなければならないところがダサい。 stack = [] while True: key_in = input() try: stack.append(eval(key_in)) print(stack) except: last_ele = stack.pop() if key_in == "+": stack[-1] += last_ele if key_in == "-": stack[-1] -= last_ele if key_in ==…