#advent #aoc #puzzle #submit #input #data #within

aocd

Advent of Code Data - 在代码中获取谜题输入并提交答案

16 个版本

0.4.0 2023 年 12 月 2 日
0.3.7 2023 年 11 月 24 日
0.3.5 2023 年 10 月 7 日
0.3.4 2023 年 1 月 19 日
0.1.0 2022 年 12 月 12 日

#5 in #submit

MIT 许可证

21KB
388 代码行数(不含注释)

Advent of Code Data

crates.io

使用 Rust 编程获取谜题输入并提交答案。

可能对懒惰的 Rustaceans 和速度黑客有用。

是的,这是 wimglenn 的 aocd Python 包,但这是为 Rust 编写的。而且,是的,这也试图缓存从 Advent of Code 获取的所有内容,以节省他们的服务器。

示例

剧透:这个示例确实解决了一个 AoC 谜题。

use aocd::*;
// or, if you prefer: use aocd::prelude::*;

#[aocd(2022, 1)]
fn main() {
    let mut elves: Vec<_> = input!()
        .split("\n\n")
        .map(|e| e.lines().map(|l| l.parse::<u32>().unwrap()).sum())
        .collect();
    elves.sort();

    submit!(1, elves.last().unwrap());
    submit!(2, elves.iter().rev().take(3).sum::<u32>());
}

测试

如果您在调试时想使用较小的测试输入,只需在顶部添加文件名即可。在这种情况下,input! 宏仅读取文件,而 submit! 仅打印结果而不提交给 AoC。

use aocd::*;

#[aocd(2022, 1, "test.txt")]
fn main() {
    ...
}

快速入门

您需要提供 AoC 会话令牌,以便此包能够获取您的个人谜题输入并能够为您提交答案。这是一个当您登录 AoC 时设置的 cookie。您可以使用浏览器检查器找到它。有关说明,请参阅 此问题。您可以使用以下任一方式将令牌提供给 aocd

# Alt 1 (this way doesn't require any environment variables to be set):
mkdir -p ~/.config/aocd
echo "your session cookie here" > ~/.config/aocd/token

# Alt 2:
export AOC_SESSION="or here"

# Alt 3:
export AOC_TOKEN="or here"

# Alt 4:
echo "or here" > some_file
export AOC_TOKEN_PATH=some_file

接下来,将此包添加到您的依赖项

cargo add aocd

在您的代码中,使用 #[aocd(year, day)] 注释您的 main 函数,然后使用宏 input!()submit!(part, answer) 分别获取谜题输入和提交答案。请参阅上面的示例。

依赖项

~11–21MB
~366K SLoC