Skip to content

Instantly share code, notes, and snippets.

@mattbasta
Created September 20, 2011 01:20
Show Gist options
  • Save mattbasta/1228076 to your computer and use it in GitHub Desktop.
Save mattbasta/1228076 to your computer and use it in GitHub Desktop.
Prefix notation math interpreter.
def gen(data):
def g():
for token in data.split(" "):
yield token
return g().next
defs = {"+": lambda x, y: x + y,
"-": lambda x, y: x - y,
"*": lambda x, y: x * y,
"/": lambda x, y: x / y}
def parser(data):
op = data()
if op not in defs:
return op
val1 = int(parser(data))
val2 = int(parser(data))
return defs[op](val1, val2)
import sys
data = sys.stdin.readline().strip()
print parser(gen(data))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment