#!/usr/bin/env python3 # -*- coding: utf-8 -*- file = "./input.txt" #file = "./ex.txt" from itertools import product def evaluate_left_to_right(numbers:list[int], operations:list[str]) -> int: result = numbers[0] for i, op in enumerate(operations): if op == '+': result += numbers[i+1] elif op == '*': result *= numbers[i+1] return result def check_combinations(numbers:list[int], target:int) -> bool: operations = ['+', '*'] n = len(numbers) - 1 for ops in product(operations, repeat=n): if target == evaluate_left_to_right(numbers, ops): return True return False def parse_str_to_int_list(number_string:str)->list[int]: result = [] tmp = number_string.split() for num in tmp: result.append(int(num)) return result if __name__ == "__main__": solution = 0 input_file = open(file, "r") for line in input_file: line = line.strip() if line == "": continue line = line.split(":") if check_combinations(parse_str_to_int_list(line[1]), int(line[0])): solution += int(line[0]) input_file.close() print(f'Solution: {solution}')