Spaces:
Running
Running
from itertools import product | |
def evaluate_expression(numbers, operators): | |
result = numbers[0] | |
for i, op in enumerate(operators): | |
if op == '+': | |
result += numbers[i + 1] | |
elif op == '*': | |
result *= numbers[i + 1] | |
elif op == '||': | |
result = int(str(result) + str(numbers[i + 1])) | |
return result | |
def is_valid_equation(test_value, numbers): | |
num_operators = len(numbers) - 1 | |
for ops in product(['+', '*', '||'], repeat=num_operators): | |
if evaluate_expression(numbers, ops) == test_value: | |
return True | |
return False | |
def main(): | |
total_calibration_result = 0 | |
with open("input.txt", "r") as file: | |
for line in file: | |
test_value_str, numbers_str = line.split(':') | |
test_value = int(test_value_str.strip()) | |
numbers = list(map(int, numbers_str.split())) | |
if is_valid_equation(test_value, numbers): | |
total_calibration_result += test_value | |
print(total_calibration_result) | |
main() |