2 个版本
0.1.1 | 2023年5月11日 |
---|---|
0.1.0 | 2023年5月10日 |
#13 在 #puzzle-solver
被 aocrun 使用
22KB
471 行代码(不含注释)
Aocsol
此仓库按年份和日期保存了 Advent Of Code 拼图的解决方案。
如何使用
使用此库包获取拼图的求解器。请参阅 文档
lib.rs
:
一个包含 Advent of Code (AoC) 拼图解决方案的包。这些解决方案使用异步 Rust 实现,因此需要异步运行时,例如 tokio
。
功能标志
要使用 solver
生成拼图的求解器,请在 Cargo.toml 中添加 solvers
功能标志
如果您想实现自己的求解器,并且只需要一些有用的工具,请在 Cargo.toml 中添加 toolcase
功能标志
示例
use std::{error, sync::Arc};
use aocsol::{puzzle::Puzzl, solver};
#[tokio::main]
async fn main() -> Result<(), Box<dyn error::Error + Send + Sync>> {
let data = "1000\n2000\n\n4000\n\n5000\n6000\n\n7000\n9000";
let puzzle = AocPuzzle(Arc::from(data));
let solver = solver::solver(puzzle)?; // solver generated
let answer_part_one: u32 = solver.part_one().await?.to_string().parse()?;
let answer_part_two: u32 = solver.part_two().await?.to_string().parse()?;
assert_eq!(16000, answer_part_one);
assert_eq!(31000, answer_part_two);
Ok(())
}
// Sturct to hold data.
struct AocPuzzle(Arc<str>);
// Implement Puzzl<InputType = Arc<str>> to generate solver using aocsol::solver::solver().
impl<'input> Puzzl for AocPuzzle {
type InputType = Arc<str>;
fn year(&self) -> u32 {
2022
}
fn day(&self) -> u32 {
1
}
fn data(&self) -> Self::InputType {
Arc::clone(&self.0)
}
}
依赖关系
~1–1.6MB
~33K SLoC