From 8969db5c8ca3ae416f520510e7aa173bda4ed4ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Jos=C3=A9=20Guti=C3=A9rrez=20de=20Quevedo=20P=C3=A9?= =?UTF-8?q?rez?= Date: Fri, 18 Dec 2020 11:20:38 +0100 Subject: [PATCH] small simplification --- 18/2.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/18/2.py b/18/2.py index a3fecfa..e035c02 100644 --- a/18/2.py +++ b/18/2.py @@ -2,11 +2,11 @@ with open("input") as f: content = [x.strip().replace(")", " )").replace("(", "( ").split(" ") for x in f] def evaluate(expression, startpos): - result = 0 + sumresult = 0 number = 0 i = startpos - expression2 = [] - endpos = startpos + endpos = None + mulresult = 1 while i < len(expression): number = None if expression[i] == "(": @@ -15,20 +15,17 @@ def evaluate(expression, startpos): endpos = i break elif expression[i] == "*": - expression2.append(result) - result = 0 + mulresult *= sumresult + sumresult = 0 elif expression[i] != "+": number = int(expression[i]) if number is not None: - result += number + sumresult += number i += 1 - expression2.append(result) - result = 1 - for e in expression2: - result *= e + mulresult *= sumresult - return result, endpos + return mulresult, endpos print(sum(map(lambda x: evaluate(x, 0)[0], content)))