-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathday9.py
executable file
·44 lines (32 loc) · 1.15 KB
/
day9.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from typing import Tuple
from day1 import find_combo_of_2
PREAMBLE_OFFSET = 25
with open('test.txt', 'r') as f:
data = [int(x) for x in f.readlines()]
def find_weakness(numbers: list):
weakness = None
for index, number in enumerate(numbers[PREAMBLE_OFFSET:]):
preambes = numbers[index:index+PREAMBLE_OFFSET]
a, b = find_combo_of_2(preambes, number)
if not a and not b:
weakness = number
break
return weakness
def find_contigous_set_of_numbers(target: int) -> Tuple[int, int]:
contigous_set = []
for number in data:
if sum(contigous_set) >= target:
for i in range(len(contigous_set)):
if sum(contigous_set[i:]) == target and len(contigous_set[i:]) > 1:
return min(contigous_set[i:]), max(contigous_set[i:])
del contigous_set[0]
contigous_set.append(number)
elif sum(contigous_set) < target:
contigous_set.append(number)
if __name__ == '__main__':
# Part 1
weakness = find_weakness(data)
print(weakness)
# Part 2
a, b = find_contigous_set_of_numbers(weakness)
print(a+b)