aoc2024/day01.py
2024-12-09 10:08:53 +01:00

42 lines
1.0 KiB
Python

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) -> tuple[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()
counted = Counter(rights)
return sum(num * counted[num] for num in lefts)
if __name__ == '__main__':
day = Day(2024, 1)
day.run(verbose=True)