blob: 3aebd454833b7b0f5b45a21146d3b80b001f11cd (
plain) (
tree)
|
|
def tokenize(xs):
result = []
i = 0
while i < len(xs):
curr = xs[i]
if curr in {'*','+'}:
result.append(curr)
i += 1
continue
i += 1
while i < len(xs) and xs[i] in {str(x) for x in range(10)}:
curr += xs[i]
i += 1
result.append(int(curr))
return result
def parse(tokens):
result = []
series = []
for token in tokens:
if token == '*':
continue
elif token == '+':
result.append(series)
series = []
else:
series.append(token)
if series:
result.append(series)
return result
def product(xs):
result = 1
for x in xs:
result *= x
return result
def evaluate(tree):
return sum([product(xs) for xs in tree])
print(evaluate(parse(tokenize("2+30*8*9+10"))))
|