mirror of
https://github.com/bertptrs/adventofcode.git
synced 2025-12-25 21:00:31 +01:00
Implement day 1
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import datetime
|
||||
import time
|
||||
from typing import IO
|
||||
|
||||
import click
|
||||
|
||||
@@ -19,8 +20,9 @@ from aoc import days
|
||||
"-t", "--time", "timing", is_flag=True, help="Print elapsed time afterwards"
|
||||
)
|
||||
@click.argument("day", required=True)
|
||||
def main(day: int, timing: bool, data: str) -> None:
|
||||
def main(day: int, timing: bool, data: IO[str]) -> None:
|
||||
runner_class = days.get_runner(day)
|
||||
data = data.read()
|
||||
|
||||
start = time.perf_counter_ns()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user