66 lines
1.8 KiB
Rust
Raw Normal View History

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-06 00:07:08 +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
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 {}),
Box::new(day04::Day04 {}),
2023-12-04 06:03:29 +00:00
Box::new(day05::Day05 {}),
2023-12-06 12:40:36 +00:00
Box::new(day06::Day06 {}),
2023-12-07 07:11:33 +00:00
Box::new(day07::Day07 {}),
2023-12-08 13:20:58 +00:00
Box::new(day08::Day08 {}),
2023-12-09 14:07:04 +00:00
Box::new(day09::Day09 {}),
2023-12-06 00:07:08 +00:00
// Box::new(day10::Day10 {}),
// Box::new(day11::Day11 {}),
// Box::new(day12::Day12 {}),
// Box::new(day13::Day13 {}),
// Box::new(day14::Day14 {}),
// Box::new(day15::Day15 {}),
// Box::new(day16::Day16 {}),
// Box::new(day17::Day17 {}),
// Box::new(day18::Day18 {}),
// Box::new(day19::Day19 {}),
// Box::new(day20::Day20 {}),
// Box::new(day21::Day21 {}),
// Box::new(day22::Day22 {}),
// Box::new(day23::Day23 {}),
// Box::new(day24::Day24 {}),
// Box::new(day25::Day25 {}),
2023-12-02 13:42:55 +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-06 00:07:08 +00:00
for day in days.leak() {
2023-12-05 19:33:10 +00:00
let task = tokio::spawn(async { day.run().unwrap() });
t.push(task);
}
2023-12-06 00:07:08 +00:00
let start_time = SystemTime::now();
2023-12-07 07:11:33 +00:00
2023-12-05 19:33:10 +00:00
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);
2023-12-06 00:07:08 +00:00
println!("========= {}ms =========\n", day.time.as_millis());
}
2023-12-07 07:11:33 +00:00
println!(
"Ran AoC 2023 in {}ms",
SystemTime::now().duration_since(start_time)?.as_millis()
);
2023-12-01 07:42:48 +00:00
Ok(())
2023-12-07 07:11:33 +00:00
}