Skip to main content

“用于创建和测试代码出现解决方案的框架。”

项目描述

代码框架的出现

代码风格:黑色

https://adventofcode.com/

用于在 Python 中实施 Advent of Code 解决方案的框架。

快速开始

Pip 安装项目,以便您可以访问该aoc命令。

pip install aoc-starter

创建一个要在其中写入解决方案的空目录。

aoc init

现在,您已准备好开始实施您的解决方案!

aoc create 01 --year 2021

这将创建 python 文件,2021/day01.py您将在其中实施解决方案。

实施解决方案后,您可以使用以下命令运行它:

aoc run 01 --year 2021 -i input.txt

解决方案实施

该文件2021/day01.py将有一个具体的类,Solution01Solutionaoc-starter.

为了最好地实施您的解决方案,必须/可以定义多种方法。

零件功能

这些是基类中唯一的抽象方法,因此必须实现。

def _part_one(self) -> int:
    ...

def _part_two(self) -> int:
    ...

这些函数应该返回代码出现问题的整数答案。可以使用 data 属性访问输入数据self.data

解析数据

您可以使用三个函数来解析数据:

def _get_data(self) -> list[Any]:
    ...

def _get_data_for_part_one(self) -> list[Any]:
    ...

def _get_data_for_part_two(self) -> list[Any]:
    ...

_get_data功能是默认功能,因此如果您不实现其他功能之一,则_get_data使用该功能。如果每个部分之间的数据解析方式存在差异,您可以使用更具体的函数。

在这些函数中,您需要将数据作为列表返回,该返回值存储在self.data.

输入处理程序

解决方案基类有一个属性input,即 type aoc.InputHandler。该对象是原始数据和解决方案之间的中介。在解析数据时,您可以使用该self.input.as_list函数与原始内容进行交互。

# default, return the content as a list of strings
def _get_data(self) -> list[str]:
    return self.input.as_list()

# parse as a certain type
def _get_data(self) -> list[int]:
    return self.input.as_list(int)

# use a custom parser
def _get_data(self) -> list[tuple[str, int]]:
    def parser(content: str, **kwargs) -> tuple[str, int]:
        key, val = content.split(": ")
        return key, int(val)

    return self.input.as_list(parser)

重新格式化输入文件

您可以使用该_reformat_data函数来更改输入数据的外观。

流行线

有时输入文件的开头有一行与实际数据不同。有InputHandler一个方法pop_line可以删除并返回原始内容中的第一行。如果您想在任何重新格式化之前使用它,您可以覆盖_pop_lines解决方案中的方法。

class Day01(Solution):

    first_line: str

    def _pop_lines(self) -> None:
        self.first_line = self.input.pop_line()

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

aoc-starter-0.2.0.tar.gz (10.3 kB 查看哈希

已上传 source

内置分布

aoc_starter-0.2.0-py3-none-any.whl (11.4 kB 查看哈希

已上传 py3