Files
AdventOfCode2024/07/07-1.py
2024-12-08 01:15:59 +01:00

42 lines
1.2 KiB
Python

#!/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}')