Spaces:
Running
Running
| def solve_part1(equation): | |
| test_value, numbers_str = equation.split(":") | |
| test_value = int(test_value) | |
| numbers = [int(x) for x in numbers_str.split()] | |
| def evaluate(index, current_value): | |
| if index == len(numbers): | |
| return current_value == test_value | |
| if evaluate(index + 1, current_value + numbers[index]): | |
| return True | |
| if evaluate(index + 1, current_value * numbers[index]): | |
| return True | |
| return False | |
| return evaluate(1, numbers[0]) | |
| def solve_part2(equation): | |
| test_value, numbers_str = equation.split(":") | |
| test_value = int(test_value) | |
| numbers = [int(x) for x in numbers_str.split()] | |
| def evaluate(index, current_value): | |
| if index == len(numbers): | |
| return current_value == test_value | |
| if evaluate(index + 1, current_value + numbers[index]): | |
| return True | |
| if evaluate(index + 1, current_value * numbers[index]): | |
| return True | |
| if evaluate(index + 1, int(str(current_value) + str(numbers[index]))): | |
| return True | |
| return False | |
| return evaluate(1, numbers[0]) | |
| with open("./input.txt") as f: | |
| equations = f.readlines() | |
| part1_sum = 0 | |
| for equation in equations: | |
| if solve_part1(equation.strip()): | |
| test_value, _ = equation.split(":") | |
| part1_sum += int(test_value) | |
| print(part1_sum) | |
| part2_sum = 0 | |
| for equation in equations: | |
| if solve_part2(equation.strip()): | |
| test_value, _ = equation.split(":") | |
| part2_sum += int(test_value) | |
| print(part2_sum) |