Advent of Code solutions
1use advent_core::{get_ydp_and_input, make_year, Selection, Year, DP, YDP};
2use macros::global_runner;
3
4global_runner!(2024, 2025);
5
6fn run_ydp(ydp: YDP, input: Option<String>) {
7 let dp = ydp.to_dp();
8
9 match ydp.year {
10 Selection::All => {
11 run_all_years(&dp, input);
12 }
13 Selection::Single(year) => {
14 run_year(year, dp, input.as_deref());
15 }
16 }
17}
18
19fn bench_ydp(ydp: YDP, input: Option<String>) {
20 let dp = ydp.to_dp();
21
22 match ydp.year {
23 Selection::Single(year) => {
24 bench_year(year, dp, input.as_deref());
25 }
26 _ => panic!("Cannot Bench All Years"),
27 }
28}
29
30fn main() {
31 let args = std::env::args().skip(1).collect::<Vec<_>>();
32
33 let command = args.first();
34
35 match command {
36 Some(command) => match command.as_str() {
37 "new" => {
38 let year = args.get(1).expect("No year provided");
39 make_year(year);
40 }
41 "solve" | "run" => {
42 let (ydp, input) = get_ydp_and_input(args[1..].to_vec());
43 run_ydp(ydp, input);
44 }
45 "bench" => {
46 let (ydp, input) = get_ydp_and_input(args[1..].to_vec());
47 bench_ydp(ydp, input);
48 }
49 _ => {
50 println!("Unknown command: {}", command);
51 println!("Available commands: new, solve, bench");
52 }
53 },
54 None => {
55 println!("No command provided");
56 println!("Available commands: new, solve");
57 }
58 }
59}