forked from thib8956/advent-of-code-2k20
day9 challenge
This commit is contained in:
parent
1cbe411264
commit
f20fc27a1c
50
day9/day9.py
Normal file
50
day9/day9.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import itertools
|
||||||
|
|
||||||
|
|
||||||
|
def part1(inp):
|
||||||
|
preamble_size = 25
|
||||||
|
with open(inp) as infile:
|
||||||
|
cleanfile = (int(l.rstrip()) for l in infile)
|
||||||
|
for nums in window(cleanfile, preamble_size + 1):
|
||||||
|
candidate = nums[-1]
|
||||||
|
if not test_number(candidate, nums[:-1]):
|
||||||
|
return candidate
|
||||||
|
return -1
|
||||||
|
|
||||||
|
|
||||||
|
def window(seq, n):
|
||||||
|
it = iter(seq)
|
||||||
|
result = tuple(itertools.islice(it, n))
|
||||||
|
if len(result) == n:
|
||||||
|
yield result
|
||||||
|
for elem in it:
|
||||||
|
result = result[1:] + (elem,)
|
||||||
|
yield result
|
||||||
|
|
||||||
|
|
||||||
|
def test_number(num, previous):
|
||||||
|
sums = set(sum(x) for x in itertools.combinations(previous, 2))
|
||||||
|
return num in sums
|
||||||
|
|
||||||
|
|
||||||
|
def part2(infile, target: int):
|
||||||
|
lines = [int(l.rstrip()) for l in open(infile).readlines()]
|
||||||
|
total = 0
|
||||||
|
visited = []
|
||||||
|
for index, _ in enumerate(lines):
|
||||||
|
i = index
|
||||||
|
while total < target:
|
||||||
|
total += lines[i]
|
||||||
|
visited.append(lines[i])
|
||||||
|
i += 1
|
||||||
|
if total == target:
|
||||||
|
return max(visited) + min(visited)
|
||||||
|
visited.clear()
|
||||||
|
total = 0
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
invalid_number = part1("input.txt")
|
||||||
|
print("part1 ", invalid_number)
|
||||||
|
print("part2 ", part2("input.txt", invalid_number))
|
1000
day9/input.txt
Normal file
1000
day9/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user