diff options
| author | 2022-12-28 11:58:20 +0100 | |
|---|---|---|
| committer | 2022-12-28 11:58:20 +0100 | |
| commit | c22544594e251613a5dbf6c4ee505716867e55e6 (patch) | |
| tree | 16abda419325121eb6a36acc306697f7acba6497 /day20/__init__.py | |
| parent | 1cf8cf3f2182bb010b60f7c916fe2cd030df1658 (diff) | |
| download | 2022-c22544594e251613a5dbf6c4ee505716867e55e6.tar.gz 2022-c22544594e251613a5dbf6c4ee505716867e55e6.tar.bz2 2022-c22544594e251613a5dbf6c4ee505716867e55e6.zip | |
Day 20 [WIP]
Diffstat (limited to 'day20/__init__.py')
| -rw-r--r-- | day20/__init__.py | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/day20/__init__.py b/day20/__init__.py index 02ff80d..a61253f 100644 --- a/day20/__init__.py +++ b/day20/__init__.py | |||
| @@ -30,29 +30,30 @@ class AssignmentOne(Assignment): | |||
| 30 | if item < 0 and index + item <= 0: | 30 | if item < 0 and index + item <= 0: |
| 31 | new_index -= 1 | 31 | new_index -= 1 |
| 32 | 32 | ||
| 33 | if new_index == -1: | ||
| 34 | new_index = len(items) | ||
| 35 | |||
| 33 | items.insert(new_index, item) | 36 | items.insert(new_index, item) |
| 34 | 37 | ||
| 35 | return items | 38 | return items |
| 36 | 39 | ||
| 40 | @staticmethod | ||
| 41 | def get_nth_number_after_0(items: List[int], n: int): | ||
| 42 | index_of_0 = items.index(0) | ||
| 43 | return items[(index_of_0 + n) % len(items)] | ||
| 44 | |||
| 37 | def run(self, input: Iterator[I]) -> T: | 45 | def run(self, input: Iterator[I]) -> T: |
| 38 | input_list = list(input) | 46 | input_list = list(input) |
| 39 | input_size = len(input_list) | ||
| 40 | working_list = list(input_list) | 47 | working_list = list(input_list) |
| 41 | 48 | ||
| 42 | for index, item in enumerate(input_list): | 49 | for index, item in enumerate(input_list): |
| 43 | working_list = self.move(working_list, item) | 50 | working_list = self.move(working_list, item) |
| 44 | 51 | ||
| 45 | print( | ||
| 46 | working_list[1000 % input_size], | ||
| 47 | working_list[2000 % input_size], | ||
| 48 | working_list[3000 % input_size], | ||
| 49 | ) | ||
| 50 | |||
| 51 | return sum( | 52 | return sum( |
| 52 | [ | 53 | [ |
| 53 | working_list[1000 % input_size], | 54 | self.get_nth_number_after_0(working_list, 1000), |
| 54 | working_list[2000 % input_size], | 55 | self.get_nth_number_after_0(working_list, 2000), |
| 55 | working_list[3000 % input_size], | 56 | self.get_nth_number_after_0(working_list, 3000), |
| 56 | ] | 57 | ] |
| 57 | ) | 58 | ) |
| 58 | 59 | ||
