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-05 07:25:39 +00:00
|
|
|
use std::error::Error;
|
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
|
|
|
|
2023-12-05 19:33:10 +00:00
|
|
|
#[tokio::main]
|
|
|
|
async fn main() -> Result<(), Box<dyn Error>> {
|
|
|
|
let days: Vec<Box<dyn Solution + Sync>> = vec![
|
2023-12-02 13:42:55 +00:00
|
|
|
Box::new(day01::Day01 {}),
|
|
|
|
Box::new(day02::Day02 {}),
|
|
|
|
Box::new(day03::Day03 {}),
|
2023-12-02 23:50:10 +00:00
|
|
|
Box::new(day04::Day04 {}),
|
2023-12-04 06:03:29 +00:00
|
|
|
Box::new(day05::Day05 {}),
|
2023-12-04 21:21:47 +00:00
|
|
|
Box::new(day06::Day06 {}),
|
2023-12-02 13:42:55 +00:00
|
|
|
];
|
2023-12-01 11:09:24 +00:00
|
|
|
|
2023-12-05 19:33:10 +00:00
|
|
|
let mut t = vec![];
|
|
|
|
|
2023-12-01 16:13:54 +00:00
|
|
|
// Run through and generate solutions
|
2023-12-05 19:33:10 +00:00
|
|
|
for day in days.leak().iter().rev() {
|
|
|
|
let task = tokio::spawn(async { day.run().unwrap() });
|
|
|
|
t.push(task);
|
|
|
|
}
|
|
|
|
|
|
|
|
let mut days = vec![];
|
|
|
|
for thread in t {
|
|
|
|
days.push(thread.await?);
|
|
|
|
}
|
|
|
|
|
|
|
|
for day in days {
|
|
|
|
println!("========= Day {} ==========", day.day);
|
|
|
|
println!("Part1 Result: {}", day.part1);
|
|
|
|
println!("Part2 Result: {}", day.part2);
|
|
|
|
println!("========= {}ms =========", day.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(())
|
|
|
|
}
|