2023-12-01 06:41:23 +00:00
|
|
|
mod solutions;
|
2023-12-01 17:55:07 +00:00
|
|
|
mod utils;
|
2023-12-01 06:41:23 +00:00
|
|
|
|
2023-12-01 17:55:07 +00:00
|
|
|
use std::{error::Error, time::SystemTime};
|
2023-12-01 07:42:48 +00:00
|
|
|
|
2023-12-01 16:13:54 +00:00
|
|
|
use solutions::*;
|
2023-12-01 07:42:48 +00:00
|
|
|
|
|
|
|
use crate::utils::get_input;
|
|
|
|
|
2023-12-01 17:55:07 +00:00
|
|
|
fn main() -> Result<(), Box<dyn Error>> {
|
|
|
|
let days: Vec<Box<dyn Solution>> = vec![Box::new(day01::Day01 {}), Box::new(day02::Day02 {})];
|
2023-12-01 11:09:24 +00:00
|
|
|
|
2023-12-01 16:13:54 +00:00
|
|
|
// Run through and generate solutions
|
|
|
|
for day in days.iter().rev() {
|
2023-12-01 17:55:07 +00:00
|
|
|
println!("========== Day {} ==========", day.get_day());
|
|
|
|
let start_time = SystemTime::now();
|
|
|
|
println!(
|
|
|
|
"Part1 Test: {}",
|
|
|
|
day.part1(get_input(day.get_day(), utils::InputType::Test1)?.as_mut())?
|
|
|
|
);
|
|
|
|
println!(
|
|
|
|
"Part1 Result: {}",
|
|
|
|
day.part1(get_input(day.get_day(), utils::InputType::Actual)?.as_mut())?
|
|
|
|
);
|
|
|
|
|
|
|
|
println!(
|
|
|
|
"Part2 Test: {}",
|
|
|
|
day.part2(get_input(day.get_day(), utils::InputType::Test2)?.as_mut())?
|
|
|
|
);
|
|
|
|
println!(
|
|
|
|
"Part2 Result: {}",
|
|
|
|
day.part2(get_input(day.get_day(), utils::InputType::Actual)?.as_mut())?
|
|
|
|
);
|
|
|
|
println!(
|
|
|
|
"========= {}ms =========",
|
|
|
|
SystemTime::now().duration_since(start_time)?.as_millis()
|
|
|
|
);
|
2023-12-01 11:09:24 +00:00
|
|
|
}
|
2023-12-01 10:38:18 +00:00
|
|
|
|
2023-12-01 07:42:48 +00:00
|
|
|
Ok(())
|
|
|
|
}
|