From 59884f4ec942bac9a0c3a82f27aa63da8af8269c Mon Sep 17 00:00:00 2001 From: kamoshi <18511281+kamoshi@users.noreply.github.com> Date: Tue, 15 Dec 2020 08:33:26 +0100 Subject: [PATCH] Create day15.py --- 2020/Python/day15.py | 46 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 2020/Python/day15.py diff --git a/2020/Python/day15.py b/2020/Python/day15.py new file mode 100644 index 0000000..cea131f --- /dev/null +++ b/2020/Python/day15.py @@ -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))