#solution #input #advent #helper #day #download #parser

aoc-next

Advent of Code 的辅助库。受 cargo-aoc 启发。

1 个不稳定版本

0.1.0 2020年12月2日

#44 in #day

MPL-2.0 许可协议

15KB
223 代码行

aoc-next

Advent of Code 的辅助库,受 cargo-aoc 启发。

功能

  • 显示解析器和解决函数的执行时间。
  • 自动下载输入
  • 筛选特定日期的解决方案
  • 首先将输入解析为更合适的结构,然后在解决方案中处理它

待办事项

  • 基准测试?
  • 改善解析器函数返回类型的泛型支持

使用方法

通用

将包作为库包含。然后声明一个静态 Aoc 结构体来 '注册' 您的解决方案。它可能看起来像这样

const AOC: Aoc = Aoc {
    allow_download: true,
    year: 2020,
    solutions: &[
        solution!{1, failable_parser!{ day1::input_generator }, solver!{ day1::solve_part1 }},
        solution!{1, failable_parser!{ day1::input_generator }, solver!{ day1::solve_part2 }},
        solution!{2, failable_parser!{ day2::input_generator }, solver!{ day2::solve_part1 }},
        solution!{2, failable_parser!{ day2::input_generator }, solver!{ day2::solve_part2 }},
    ],
};

要运行您的解决方案,请将 app::aoc_main 添加到您的 main 方法中。它将负责向您的解析器提供输入并执行您的解决方案。

如果您只想查看特定日期的解决方案,只需将数字作为第一个参数传递:例如,使用 cargo run --release 2 来运行所有第 2 天的解决方案。

自动输入下载

您需要找到 AoC 的会话令牌,以便自动下载工作。幸运的是,找到令牌很容易,因为它存储在您的浏览器 cookie 中。打开浏览器的开发者工具,然后

  • Firefox:'存储' 选项卡,Cookie,并复制会话 cookie 的 '值' 字段。
  • Google Chrome / Chromium:'应用程序' 选项卡,Cookie,并复制会话 cookie 的 '值' 字段。

现在将它们放入项目 Cargo.toml 旁边的 .aoc_session.txt 中。

重要:请确保将 .aoc_session.txt 添加到您的 .gitignore,这样您就不会实际提交会话令牌!

示例

有关库的使用示例,请参阅 https://github.com/liketechnik/aoc-2020 或如果您遇到任何问题,请打开一个问题。我还在 rust discord(s) (as liketechnik#8562) 上可用。

依赖关系

~3–7MB
~162K SLoC