Create day15.py
This commit is contained in:
parent
da7668c586
commit
59884f4ec9
46
2020/Python/day15.py
Normal file
46
2020/Python/day15.py
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
def parse_data() -> list[int]:
|
||||||
|
numbers = []
|
||||||
|
with open("input.txt") as file:
|
||||||
|
for line in file:
|
||||||
|
numbers += map(int, line.split(","))
|
||||||
|
return numbers
|
||||||
|
|
||||||
|
|
||||||
|
def solve_p1(data: list[int]) -> int:
|
||||||
|
turns = {}
|
||||||
|
curr_turn = 1
|
||||||
|
last_num = 0
|
||||||
|
|
||||||
|
def shift(_number, _turn) -> None:
|
||||||
|
if _number in turns:
|
||||||
|
(_turn_before, _turn_last) = turns[_number]
|
||||||
|
turns[_number] = (_turn_last, _turn)
|
||||||
|
else:
|
||||||
|
turns[_number] = (-1, _turn)
|
||||||
|
|
||||||
|
for number in data:
|
||||||
|
turns[number] = (-1, curr_turn)
|
||||||
|
last_num = number
|
||||||
|
curr_turn += 1
|
||||||
|
|
||||||
|
for i in range(curr_turn, 2021):
|
||||||
|
if last_num in turns:
|
||||||
|
(before, last) = turns[last_num]
|
||||||
|
if before != -1:
|
||||||
|
age = last - before
|
||||||
|
last_num = age
|
||||||
|
shift(age, i)
|
||||||
|
continue
|
||||||
|
last_num = 0
|
||||||
|
shift(0, i)
|
||||||
|
|
||||||
|
return last_num
|
||||||
|
|
||||||
|
|
||||||
|
def solve_p2(data: list[int]) -> int:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
DATA = parse_data()
|
||||||
|
print(solve_p1(DATA))
|
||||||
|
print(solve_p2(DATA))
|
Loading…
Reference in a new issue