From e688c2b674fc7ad6a964a48df379e5abd01843a7 Mon Sep 17 00:00:00 2001 From: Tom van der Lee Date: Mon, 4 Dec 2023 10:40:34 +0100 Subject: Day4 --- aoc/__main__.py | 22 +++++++++----- aoc/decorators.py | 1 - aoc/tests/test_datastructures.py | 63 ++++++++++++++++++++++++++++++---------- 3 files changed, 62 insertions(+), 24 deletions(-) (limited to 'aoc') diff --git a/aoc/__main__.py b/aoc/__main__.py index f5f08d3..596abee 100644 --- a/aoc/__main__.py +++ b/aoc/__main__.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- import enum import typing import importlib @@ -25,15 +26,17 @@ def kwargs(kwarg: str) -> List: @app.command() -def run(day: str, - part: str = typer.Option("One", '--part', help="Assignment part. Defaults to 'One'.", show_choices=True), - example: bool = typer.Option(False, '--example', help="Use an example input file"), - kwargs: List[str] = typer.Argument(None) - ): - +def run( + day: str, + part: str = typer.Option( + "1", "--part", help="Assignment part. Defaults to 'One'.", show_choices=True + ), + example: bool = typer.Option(False, "--example", help="Use an example input file"), + kwargs: List[str] = typer.Argument(None), +): assignment_day = importlib.import_module(day) - Assignment = getattr(assignment_day, f"Assignment{part}") + Assignment = getattr(assignment_day, f"Assignment{AssignmentPart(part).name}") assignment = Assignment( path=os.path.dirname(assignment_day.__file__), **dict(kwargs) ) @@ -46,7 +49,10 @@ def run(day: str, ) end = perf_counter() delta = end - start - typer.secho(f'\n{(delta if delta > 1 else delta * 1000):.3f}{"s" if delta > 1 else "ms"}', fg="green") + typer.secho( + f'\n{(delta if delta > 1 else delta * 1000):.3f}{"s" if delta > 1 else "ms"}', + fg="green", + ) @app.command() diff --git a/aoc/decorators.py b/aoc/decorators.py index 42603c2..98246e6 100644 --- a/aoc/decorators.py +++ b/aoc/decorators.py @@ -24,7 +24,6 @@ def infinite_generator(func: AssignmentRun) -> AssignmentRun: def list_input(func: AssignmentRun) -> AssignmentRunList: @wraps(func) def wrapper(self, input: Iterator, *args, **kwargs) -> T: - return func(self, list(input), *args, **kwargs) return wrapper diff --git a/aoc/tests/test_datastructures.py b/aoc/tests/test_datastructures.py index 42cc44d..1c291cc 100644 --- a/aoc/tests/test_datastructures.py +++ b/aoc/tests/test_datastructures.py @@ -24,13 +24,26 @@ class TestCoordinate: def test_neighbours(self): c = Coordinate(0, 0) - neighbours = {Coordinate(-1, 0), Coordinate(1, 0), Coordinate(0, -1), Coordinate(0, 1), - Coordinate(-1, -1), Coordinate(-1, 1), Coordinate(1, -1), Coordinate(1, 1)} + neighbours = { + Coordinate(-1, 0), + Coordinate(1, 0), + Coordinate(0, -1), + Coordinate(0, 1), + Coordinate(-1, -1), + Coordinate(-1, 1), + Coordinate(1, -1), + Coordinate(1, 1), + } assert set(c.neighbours()) == neighbours def test_neighbours_no_diagonal(self): c = Coordinate(0, 0) - neighbours_no_diagonal = {Coordinate(-1, 0), Coordinate(1, 0), Coordinate(0, -1), Coordinate(0, 1)} + neighbours_no_diagonal = { + Coordinate(-1, 0), + Coordinate(1, 0), + Coordinate(0, -1), + Coordinate(0, 1), + } assert set(c.neighbours(no_diagonal=True)) == neighbours_no_diagonal @@ -57,23 +70,43 @@ class TestCoordinate3: def test_neighbours(self): c = Coordinate3(0, 0, 0) neighbours = { - Coordinate3(-1, -1, -1), Coordinate3(-1, -1, 0), Coordinate3(-1, -1, 1), - Coordinate3(-1, 0, -1), Coordinate3(-1, 0, 0), Coordinate3(-1, 0, 1), - Coordinate3(-1, 1, -1), Coordinate3(-1, 1, 0), Coordinate3(-1, 1, 1), - Coordinate3(0, -1, -1), Coordinate3(0, -1, 0), Coordinate3(0, -1, 1), - Coordinate3(0, 0, -1), Coordinate3(0, 0, 1), - Coordinate3(0, 1, -1), Coordinate3(0, 1, 0), Coordinate3(0, 1, 1), - Coordinate3(1, -1, -1), Coordinate3(1, -1, 0), Coordinate3(1, -1, 1), - Coordinate3(1, 0, -1), Coordinate3(1, 0, 0), Coordinate3(1, 0, 1), - Coordinate3(1, 1, -1), Coordinate3(1, 1, 0), Coordinate3(1, 1, 1) + Coordinate3(-1, -1, -1), + Coordinate3(-1, -1, 0), + Coordinate3(-1, -1, 1), + Coordinate3(-1, 0, -1), + Coordinate3(-1, 0, 0), + Coordinate3(-1, 0, 1), + Coordinate3(-1, 1, -1), + Coordinate3(-1, 1, 0), + Coordinate3(-1, 1, 1), + Coordinate3(0, -1, -1), + Coordinate3(0, -1, 0), + Coordinate3(0, -1, 1), + Coordinate3(0, 0, -1), + Coordinate3(0, 0, 1), + Coordinate3(0, 1, -1), + Coordinate3(0, 1, 0), + Coordinate3(0, 1, 1), + Coordinate3(1, -1, -1), + Coordinate3(1, -1, 0), + Coordinate3(1, -1, 1), + Coordinate3(1, 0, -1), + Coordinate3(1, 0, 0), + Coordinate3(1, 0, 1), + Coordinate3(1, 1, -1), + Coordinate3(1, 1, 0), + Coordinate3(1, 1, 1), } assert set(c.neighbours()) == neighbours def test_neighbours_no_diagonal(self): c = Coordinate3(0, 0, 0) neighbours_no_diagonal = { - Coordinate3(-1, 0, 0), Coordinate3(1, 0, 0), - Coordinate3(0, -1, 0), Coordinate3(0, 1, 0), - Coordinate3(0, 0, -1), Coordinate3(0, 0, 1) + Coordinate3(-1, 0, 0), + Coordinate3(1, 0, 0), + Coordinate3(0, -1, 0), + Coordinate3(0, 1, 0), + Coordinate3(0, 0, -1), + Coordinate3(0, 0, 1), } assert set(c.neighbours(no_diagonal=True)) == neighbours_no_diagonal -- cgit v1.2.3