mirror of
https://github.com/bertptrs/adventofcode.git
synced 2025-12-26 13:20:32 +01:00
42 lines
868 B
Python
42 lines
868 B
Python
import datetime
|
|
import time
|
|
from typing import IO
|
|
|
|
import click
|
|
|
|
from aoc import days
|
|
|
|
|
|
@click.command()
|
|
@click.option(
|
|
"-i",
|
|
"--input",
|
|
"data",
|
|
type=click.File(mode="rt", encoding="utf8"),
|
|
default="-",
|
|
help="Problem input file",
|
|
)
|
|
@click.option(
|
|
"-t", "--time", "timing", is_flag=True, help="Print elapsed time afterwards"
|
|
)
|
|
@click.argument("day", required=True)
|
|
def main(day: int, timing: bool, data: IO[str]) -> None:
|
|
runner_class = days.get_runner(day)
|
|
contents = data.read()
|
|
|
|
start = time.perf_counter_ns()
|
|
|
|
part1, part2 = runner_class.run_both(contents)
|
|
|
|
if timing:
|
|
elapsed = time.perf_counter_ns() - start
|
|
delta = datetime.timedelta(microseconds=elapsed / 1000)
|
|
click.echo(f"Elapsed: {delta}", err=True)
|
|
|
|
click.echo(part1)
|
|
click.echo(part2)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|