import random def test(expression: list[str|int]) -> int: while len(expression) >= 3: left, op, right = expression[0], expression[1], expression[2] if len(expression) > 3: expression = expression[3:] else: expression = [] if op == '*': expression.insert(0, left * right) else: expression.insert(0, left + right) return expression[0] def genrate_expression(vals: list[int]) -> list[str|int]: ops = [random.choice('*+') for _ in range(len(vals) - 1)] expr = [] for item in zip(vals, ops): expr.extend(item) expr.append(vals[-1]) return expr with open('input.data') as file: inputs = [] for line in file: vals = [int(val) for val in line.replace(':', '').split()] inputs.append([vals[0], vals[1:]]) s = 0 for case in inputs: answer, vals = case[0], case[1] expr = genrate_expression(vals) for i in range(20000): expr = genrate_expression(vals) result = test(expr) if result == answer: #print(expr) s += answer break print(s)