aoc as script
This commit is contained in:
parent
5c36ef4f6f
commit
fbc14bd38b
2 changed files with 31 additions and 22 deletions
49
aoc.py
49
aoc.py
|
@ -3,6 +3,7 @@ from pathlib import Path
|
|||
from typing import Any, Generic, TypeVar
|
||||
from urllib.request import Request, urlopen
|
||||
from html.parser import HTMLParser
|
||||
from importlib import import_module
|
||||
|
||||
T1 = TypeVar("T1")
|
||||
T2 = TypeVar("T2")
|
||||
|
@ -84,34 +85,30 @@ class Aoc2(ABC, Generic[T1, T2]):
|
|||
code_extractor.feed(site)
|
||||
return code_extractor.code
|
||||
|
||||
def run_example_1(self, ex_nr: int = 0) -> None:
|
||||
def run_example_1(self, ex_nr: int = 0) -> str:
|
||||
inpt = self.get_examples_for_day()[ex_nr]
|
||||
print(self.part1(self.parseinput1(inpt)))
|
||||
return str(self.part1(self.parseinput1(inpt)))
|
||||
|
||||
def run_example_2(self, ex_nr: int = -1) -> None:
|
||||
def run_example_2(self, ex_nr: int = -1) -> str:
|
||||
inpt = self.get_examples_for_day()[ex_nr]
|
||||
print(self.part2(self.parseinput2(inpt)))
|
||||
return str(self.part2(self.parseinput2(inpt)))
|
||||
|
||||
def run_1(self) -> None:
|
||||
def run_1(self) -> str:
|
||||
inpt = self.get_data_for_day()
|
||||
print(self.part1(self.parseinput1(inpt)))
|
||||
return str(self.part1(self.parseinput1(inpt)))
|
||||
|
||||
def run_2(self) -> None:
|
||||
def run_2(self) -> str:
|
||||
inpt = self.get_data_for_day()
|
||||
print(self.part2(self.parseinput2(inpt)))
|
||||
return str(self.part2(self.parseinput2(inpt)))
|
||||
|
||||
def run(self) -> None:
|
||||
print("Examples:")
|
||||
print("Part 1: ", end="")
|
||||
self.run_example_1()
|
||||
print("Part 2: ", end="")
|
||||
self.run_example_2()
|
||||
print("Example:\t", end="")
|
||||
print(f"{self.run_example_1()}\t", end="")
|
||||
print(f"{self.run_example_2()}")
|
||||
|
||||
print("\nPuzzle:")
|
||||
print("Part 1: ", end="")
|
||||
self.run_1()
|
||||
print("Part 2: ", end="")
|
||||
self.run_2()
|
||||
print("Real input:\t", end="")
|
||||
print(f"{self.run_1()}\t", end="")
|
||||
print(f"{self.run_2()}")
|
||||
|
||||
|
||||
class Aoc(Generic[T1], Aoc2[T1, T1]):
|
||||
|
@ -126,3 +123,19 @@ class Aoc(Generic[T1], Aoc2[T1, T1]):
|
|||
|
||||
def part2(self, inpt: T1) -> Any:
|
||||
return self.part1(inpt)
|
||||
|
||||
|
||||
def main():
|
||||
days = [
|
||||
import_module(file.stem)
|
||||
for file in Path(".").iterdir()
|
||||
if file.name.endswith(".py") and file.name.startswith("day")
|
||||
]
|
||||
for day in days:
|
||||
print(f"Running {day.__name__}")
|
||||
day.main()
|
||||
print()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
4
day01.py
4
day01.py
|
@ -1,10 +1,6 @@
|
|||
import aoc
|
||||
|
||||
|
||||
def rstr(i: str) -> str:
|
||||
return "".join(reversed(i))
|
||||
|
||||
|
||||
class Day01(aoc.Aoc[list[str]]):
|
||||
def __init__(self) -> None:
|
||||
super().__init__(2023, 1)
|
||||
|
|
Loading…
Add table
Reference in a new issue