This commit is contained in:
Ruediger Ludwig 2022-11-30 19:39:52 +01:00
commit a355de5d8b
24 changed files with 1133 additions and 0 deletions

23
advent/days/template.py Normal file
View file

@ -0,0 +1,23 @@
import typing
ResultType = int | str | list[str]
class Day(typing.Protocol):
day_num: int
@staticmethod
def part1(lines: typing.Iterator[str]) -> ResultType | None:
...
@staticmethod
def part2(lines: typing.Iterator[str]) -> ResultType | None:
...
def is_day(object: typing.Any) -> typing.TypeGuard[Day]:
try:
return (isinstance(object.day_num, int)
and callable(object.part1) and callable(object.part2))
except AttributeError:
return False