--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2007/09/02

逆ポーランド式の計算

リベンジ。でも Python で。

Python での逆ポーランドは前回カスみたいなコード書いたから、これに対するリベンジでもある。あいかわらず文法チェック等は一切無しだけど。

 1 #!/usr/bin/env python
 2 #coding:utf-8
 3 ##############################################
 4 #逆ポーランド式を計算するプログラム
 5 #2007年  9月  2日 日曜日 02:59:18 JST
 6 ##############################################
 7 
 8 operators = {
 9     '+':lambda x, y: x + y,
10     '-':lambda x, y: x - y,
11     '*':lambda x, y: x * y,
12     '/':lambda x, y: x / y,
13 }
14 def solve(target):
15     stack = []
16     ops = operators.keys()
17     for token in target.split():
18         if token not in ops:
19             stack.append(int(token))
20         else:
21             stack.append(operators[token](stack.pop(-2), stack.pop()))
22     return stack[0]
23 
24 def main():
25     print solve('2 2 +')
26     print solve('2 2 2 + +')
27     print solve('2 3 * 4 5 * +')
28     print solve('2 3 4 + * 3 /')
29 
30 if __name__ == '__main__':
31     main()
  • リストにしてもディクショナリにしても、便利すぎて涙が出る。
スポンサーサイト

comment

post




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。