6 个版本 (破坏性更新)
0.5.0 | 2022 年 12 月 5 日 |
---|---|
0.4.1 | 2022 年 12 月 1 日 |
0.3.0 | 2020 年 12 月 10 日 |
0.2.0 | 2020 年 12 月 9 日 |
0.1.0 | 2020 年 12 月 8 日 |
#173 在 性能分析
每月 81 次下载
87KB
565 代码行
Advent of Code 辅助工具
本包提供宏,用于生成 Advent of Code 参与的多个 main。目的是通过更简单的代码库提供类似于 cargo-aoc 的功能。
目前此工具将提供以下好处
- 解决方案的优雅组织
- 自动下载和加载输入文件
- 生成 criterion 基准测试
使用方法
必须在一个名为 dayX
的模块中实现给定日期的生成器和解决方案。然后你可以在你的 main.rs
中调用 aoc_main::main!
宏。
mod day1 {
pub fn generator(input: &str) -> Vec<u64> {
input
.lines()
.map(|line| line.parse().unwrap())
.collect()
}
pub fn part_1(input: &[u64]) -> u64 {
input.iter().map(|&mass| mass / 3 - 2).sum()
}
pub fn part_2(input: &[u64]) -> u64 {
fn total_needed_mass(obj: u64) -> u64 {
if obj < 9 {
0
} else {
let obj_mass = obj / 3 - 2;
obj_mass + total_needed_mass(obj_mass)
}
}
input.iter().copied().map(total_needed_mass).sum()
}
}
mod day2;
mod day3;
aoc_main::main! {
year 2019;
day1 : generator => part_1, part_2;
day2 : generator => part_1, part_2, part_2_optimized;
day3 => part_1, part_2; // no generator, a &str is passed
}
然后你可以简单地运行 cargo run
!
请注意,你的解决方案必须接受生成器输出的借用版本。同时,生成器可以输出包含来自原始输入文件的借用数据的结构。
基准测试
你可以通过运行 cargo run --release -- --bench
来运行 Criterion 基准测试,但首先你需要在你的 cargo.toml 中启用 bench
功能。
[dependencies]
aoc-main = { version = "*", features = ["bench"] }
获取你的 AOC 令牌
当命令行请求你的会话令牌时,你可以按照以下步骤操作(摘自 cargo-aoc)
- Firefox: "存储" 选项卡,Cookie,并复制会话 Cookie 的 "值" 字段。
- Google Chrome / Chromium: "应用" 选项卡,Cookie,并复制会话 Cookie 的 "值" 字段。
如果您想要更改或忘记您的连接令牌,您需要从您的配置目录中删除aoc
(例如,对于Linux用户为$HOME/.config/aoc
)。
依赖项
~3–17MB
~191K SLoC