Skip to content

Commit 2124365

Browse files
committed
completed day 7 of year 2024
1 parent 0ae5adf commit 2124365

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

2024/7.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
4+
from typing import List
5+
from itertools import product
6+
7+
split_data = True
8+
completed = True
9+
raw_data = None # Not To be touched
10+
11+
def part1(data:List[str]):
12+
result = 0
13+
14+
for line in data:
15+
output, numbers = line.split(': ')
16+
numbers = numbers.split(' ')
17+
18+
for operators in product(['+', '*'], repeat=len(numbers) - 1):
19+
equation = int(numbers[0])
20+
for op, num in zip(operators, numbers[1:]):
21+
if op == '+':
22+
equation += int(num)
23+
else:
24+
equation *= int(num)
25+
26+
if equation == int(output):
27+
result += int(output)
28+
break
29+
30+
return result
31+
32+
def part2(data:List[str]):
33+
result = 0
34+
35+
for line in data:
36+
output, numbers = line.split(': ')
37+
numbers = numbers.split(' ')
38+
39+
for operators in product(['+', '*', '||'], repeat=len(numbers) - 1):
40+
equation = int(numbers[0])
41+
for op, num in zip(operators, numbers[1:]):
42+
if op == '+':
43+
equation += int(num)
44+
elif op == '*':
45+
equation *= int(num)
46+
else:
47+
equation = int(str(equation)+num)
48+
49+
if equation == int(output):
50+
result += int(output)
51+
break
52+
53+
return result

0 commit comments

Comments
 (0)