diff options
Diffstat (limited to 'day20')
| -rw-r--r-- | day20/__init__.py | 21 | ||||
| -rw-r--r-- | day20/test_init.py | 8 |
2 files changed, 19 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 | ||
diff --git a/day20/test_init.py b/day20/test_init.py index b3ccc44..24b94cb 100644 --- a/day20/test_init.py +++ b/day20/test_init.py | |||
| @@ -25,3 +25,11 @@ def test_rotation(): | |||
| 25 | 25 | ||
| 26 | items = AssignmentOne.move(items, 4) | 26 | items = AssignmentOne.move(items, 4) |
| 27 | assert items == [1, 2, -3, 4, 0, 3, -2] | 27 | assert items == [1, 2, -3, 4, 0, 3, -2] |
| 28 | |||
| 29 | |||
| 30 | def test_get_nth_number_after_0(): | ||
| 31 | items = [1, 2, -3, 4, 0, 3, -2] | ||
| 32 | |||
| 33 | assert AssignmentOne.get_nth_number_after_0(items, 1000) == 4 | ||
| 34 | assert AssignmentOne.get_nth_number_after_0(items, 2000) == -3 | ||
| 35 | assert AssignmentOne.get_nth_number_after_0(items, 3000) == 2 | ||
