Advent of Code solutions
at main 59 lines 1.6 kB view raw
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}