Implement day 1

This commit is contained in:
2024-12-01 10:48:35 +01:00
parent 6adfbd29f1
commit 16092fe5b2
5 changed files with 45 additions and 8 deletions

View File

@@ -1,13 +1,28 @@
from collections import defaultdict
from io import StringIO
from typing import Any
from . import SeparateRunner
import numpy
from . import CombinedRunner
class DayRunner(SeparateRunner):
class DayRunner(CombinedRunner):
@classmethod
def part1(cls, _data: str) -> Any:
return "Hello"
def run_both(cls, data: str) -> tuple[Any, Any]:
data = StringIO(data)
nums = numpy.loadtxt(data, dtype=numpy.int32)
@classmethod
def part2(cls, _data: str) -> Any:
return "world!"
left = nums[..., 0]
right = nums[..., 1]
left.sort()
right.sort()
diff = numpy.abs(left - right).sum()
counts = defaultdict(int)
for val in right:
counts[val] += 1
return diff, sum(counts[v] * v for v in left)