Initial
This commit is contained in:
commit
a355de5d8b
24 changed files with 1133 additions and 0 deletions
23
advent/days/template.py
Normal file
23
advent/days/template.py
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue