diff --git a/src/day03.rs b/src/day03.rs index b17f00f..d581495 100644 --- a/src/day03.rs +++ b/src/day03.rs @@ -27,6 +27,7 @@ mod test { fn test1() { assert_eq!(part1(TEST_INPUT), 0); } + #[test] fn test2() { assert_eq!(part2(TEST_INPUT), 0); diff --git a/src/main.rs b/src/main.rs index 7ac2fd1..4b2441c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,13 +1,35 @@ -use std::env::args; +use std::{collections::HashMap, env::args}; use advent_of_rust_2024::*; +use itertools::Itertools; fn main() { + let mains: HashMap ()> = HashMap::from_iter([ + (1, day01::day_main as fn()), + (2, day02::day_main), + (3, day03::day_main), + ]); let day: Option = args().nth(1).and_then(|a| a.parse().ok()); - match day { - Some(1) => day01::day_main(), - Some(2) => day02::day_main(), - Some(3) => day03::day_main(), - _ => println!("Please select a day to run"), - } + let Some(day) = day else { + mains + .iter() + .sorted_by_key(|entry| entry.0) + .for_each(|(d, f)| { + println!("Day {d}:"); + f(); + }); + return; + }; + + let Some(f) = mains.get(&day) else { + println!("No implementation for day {day}."); + println!( + "Pick one of {}", + mains.keys().map(|k| k.to_string()).join(", ") + ); + return; + }; + + println!("Day {day}:"); + f(); }