from collections import Counter from tools.aoc import AOCDay from typing import Any class Day(AOCDay): inputs = [ [ (11, "input1_test"), (2378066, "input1_dennis"), (2196996, "input1"), ], [ (31, "input1_test"), (18934359, "input1_dennis"), (23655822, "input1"), ] ] def parse_input(self) -> (list, list): lefts, rights = [], [] for line in self.getInput(): left, right = map(int, line.split()) lefts.append(left) rights.append(right) return list(sorted(lefts)), list(sorted(rights)) def part1(self) -> Any: lefts, rights = self.parse_input() return sum(abs(l - r) for l, r in zip(lefts, rights)) def part2(self) -> Any: lefts, rights = self.parse_input() rights = Counter(rights) return sum(num * rights[num] for num in lefts) if __name__ == '__main__': day = Day(2024, 1) day.run(verbose=True)