From 8b0d7b20525238efaf9e3fff265f9cfa5feba306 Mon Sep 17 00:00:00 2001 From: Stegallo Date: Sat, 30 Nov 2024 21:36:45 -0800 Subject: [PATCH] day1 --- y_2024/day1.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/y_2024/day1.py b/y_2024/day1.py index 6154f2c..c8f7dbb 100644 --- a/y_2024/day1.py +++ b/y_2024/day1.py @@ -1,3 +1,4 @@ +from collections import Counter from typing import Optional from pydantic.dataclasses import dataclass @@ -8,10 +9,10 @@ @dataclass class Row: original: str - processed: Optional[str] = None + processed: Optional[list] = None def __post_init__(self) -> None: - self.processed = "" # self.original + self.processed = self.original.split() class Day(AoCDay): @@ -19,14 +20,19 @@ def __init__(self, test=0): super().__init__(__name__, test) def _preprocess_input(self): - # self.__input_data = [[int(i) for i in chunk] for chunk in self._input_data] - print(f"{self._input_data=}") - self.__input_data = [Row(i) for i in self._input_data[0]] + parsed_input = [Row(i) for i in self._input_data[0]] + self.__first_list = [int(i.processed[0]) for i in parsed_input] + self.__second_list = [int(i.processed[1]) for i in parsed_input] def _calculate_1(self): - for x in self.__input_data: - print(f"{x}") - return 0 + result = 0 + for x, y in zip(sorted(self.__first_list), sorted(self.__second_list)): + result += abs(y - x) + return result def _calculate_2(self): - return 0 + result = 0 + c = Counter(self.__second_list) + for x in self.__first_list: + result += x * c.get(x, 0) + return result