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) |