#advent #code #aoc

adventurous

Advent of Code 解谜的配套crate

6个版本 (3个重大更新)

0.3.0 2023年12月3日
0.2.0 2023年12月2日
0.1.0 2023年12月2日
0.0.3 2018年12月2日

#12 in #advent

每月32次下载

MIT许可协议

11KB
204

Adventurous

Adventurous 是一个配套crate,帮助您解决 Advent of Code 的谜题。

crates.io docs.rs license

安装

[dependencies]
adventurous = "0.3.0"

示例

解决谜题

use adventurous::Input;
use anyhow::Result;

#[adventurous::part_one]
fn part_one(input: &Input) -> Result<usize> {
    Ok(input
        .traverse(|line| {
            // Do something with the line...
            line.parse::<usize>()
        })?
        .sum())
}

#[adventurous::part_two]
fn part_two(_input: &Input) -> Result<usize> {
    todo!()
}

fn main() -> Result<()> {
    adventurous::run("input.txt", part_one, part_two)
}

回归测试

一旦解决了某个谜题,您可以使用 #[part_one]#[part_two] 属性提供每个部分的正确答案。

tests 模块中调用 test_solutions!() 将生成回归测试,确保您的求解器输出的结果与正确答案匹配。

use adventurous::Input;
use anyhow::Result;

#[adventurous::part_one(answer = "73")]
fn part_one(input: &Input) -> Result<usize> {
    Ok(input
        .traverse(|line| {
            // Do something with the line...
            line.parse::<usize>()
        })?
        .sum())
}

#[cfg(test)]
mod tests {
    use super::*;

    adventurous::test_solutions!();
}

依赖

~0.6–1.1MB
~22K SLoC