#advent #solution #automatic #challenge #structure #generate #import

aoc-auto

自动导入Advent of Code挑战的解决方案,便于运行

1个不稳定版本

0.1.0 2023年12月3日

#715 in 进程宏

MIT 许可证

9KB
113 代码行

aoc-auto

简化并加快启动新的Advent of Code挑战的过程。

这是一个生成脚本,它会生成文件,自动生成Rust文件,根据预定的项目结构导入你每年/每天/部分的解决方案。

您可以在https://github.com/AlexanderReaper7/advent-of-code-rs上看到我如何使用它。

用法

安装

运行cargo add aoc-auto --build将其添加到项目的构建依赖中。

然后添加以下内容到您的build.rs文件中

// build.rs
use aoc_auto::aoc_auto;
fn main() {
   aoc_auto();
}

项目结构

您需要使用名为y{year}的文件夹,其中包含该年Advent of Code挑战每一天的文件,文件名为d{day}.rs。以下是一个示例:

├── Cargo.toml
├── build.rs
└── src
    ├── y2023
    │   ├── d1.rs
    │   └── d2.rs
    ├── y2024
    │   ├── d1.rs
    │   └── d2.rs
    └── main.rs

这将转换为以下内容:

├── Cargo.toml
├── build.rs
└── src
    ├── y2023
    │   ├── d1.rs
    │   ├── d2.rs
    │   └── mod.rs
    ├── y2024
    │   ├── d1.rs
    │   ├── d2.rs
    │   └── mod.rs
    ├── main.rs
    └── auto_import.rs

d1.rs(以及任何其他天)必须包含两个函数:part1part2,它们接受一个String并返回一个String

// src/y2023/d1.rs
pub fn part1(input: String) -> String {
    unimplemented!()
}

pub fn part2(input: String) -> String {
    unimplemented!()
}

运行

在您的main.rs文件中,您现在可以导入生成的auto_import文件,并使用select_function函数选择您的解决方案。

// src/main.rs
mod auto_import;

fn main() {
    // Some example input
    let input = "challenge input"
    // Select the function for year 2023, day 1, part 1
    let function = auto_import::select_function(2023, 1, 1).unwrap();
    // Call the function with the input and print the result
    println!("{}", function(input));
}

待办事项

  • CLI工具,用于在所选年份和天数中创建模板文件。
    • 同时从AOC网站自动获取该天的标题和URL,并将其粘贴到文件描述中。

依赖项

~0.5–1MB
~24K SLoC