/
day09
executable file
·26 lines (25 loc) · 1.01 KB
/
day09
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
#!/usr/bin/python
# Floris Douw
# 2020
#
# AoC 2020 Day 9: Encoding Error
with open('input/day09', 'r') as f:
numbers = [int(d.strip()) for d in f]
for i in range(25, len(numbers)):
if numbers[i] not in [a + b for a in numbers[i - 25:i] for b in numbers[i - 25:i] if a != b]:
target = numbers[i]
print(f'Part 1: {target}')
break
summed = numbers.copy()
for i in range(1, len(numbers)):
summed[i] += summed[i - 1]
for i in range(len(numbers)):
for j in range(i+2, len(numbers)):
if summed[j] - summed[i] == target:
# summed[j]-summed[i] gives the sum of numbers[i+1]..numbers[j]
print(f'Part 2: {min(numbers[i+1:j]) + max(numbers[i+1:j])}')
if summed[j] - summed[i] > target:
break
# Alternative oneliner
print([min(numbers[i+1:j]) + max(numbers[i+1:j]) for i in range(len(numbers))
for j in range(len(numbers)) if i+1 < j and summed[j] - summed[i] == target])