generated from public/aoc_template
40 lines
955 B
Python
40 lines
955 B
Python
from collections import Counter
|
|
from tools.aoc import AOCDay
|
|
from typing import Any
|
|
|
|
|
|
class Day(AOCDay):
|
|
inputs = [
|
|
[
|
|
(11, "input1_test"),
|
|
(2196996, "input1"),
|
|
],
|
|
[
|
|
(31, "input1_test"),
|
|
(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)
|