git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15cgit-subtree-split:24f5a642afChange-Id: I6105b3762b79126b3488359c95978cadb3efa789
		
			
				
	
	
		
			50 lines
		
	
	
	
		
			899 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			899 B
		
	
	
	
		
			Python
		
	
	
	
	
	
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
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"))))
 |