advent-of-code-2024/src/main.rs
2024-12-08 17:59:22 +01:00

159 lines
3.8 KiB
Rust

pub mod days;
extern crate scan_fmt;
use std::time::Instant;
fn main() {
if std::env::args().len() > 1 {
if let Some(day) = std::env::args().nth(1) {
match day.as_str() {
"all" => all_days(),
"1" => days::d01::solve(),
"2" => days::d02::solve(),
"3" => days::d03::solve(),
"4" => days::d04::solve(),
"5" => days::d05::solve(),
"6" => days::d06::solve(),
"7" => days::d07::solve(),
"8" => days::d08::solve(),
"9" => days::d09::solve(),
"10" => days::d10::solve(),
"11" => days::d11::solve(),
"12" => days::d12::solve(),
"13" => days::d13::solve(),
"14" => days::d14::solve(),
"15" => days::d15::solve(),
"16" => days::d16::solve(),
"17" => days::d17::solve(),
"18" => days::d18::solve(),
"19" => days::d19::solve(),
"20" => days::d20::solve(),
"21" => days::d21::solve(),
"22" => days::d22::solve(),
"23" => days::d23::solve(),
"24" => days::d24::solve(),
"25" => days::d25::solve(),
_ => println!("Day not implemented"),
}
}
} else {
all_days();
}
}
#[allow(unused)]
fn all_days() {
let start = Instant::now();
let mut time = start.clone();
println!("\nDay 1");
days::d01::solve();
time = _print_elapsed(time);
println!("\nDay 2");
days::d02::solve();
time = _print_elapsed(time);
println!("\nDay 3");
days::d03::solve();
time = _print_elapsed(time);
println!("\nDay 4");
days::d04::solve();
time = _print_elapsed(time);
println!("\nDay 5");
days::d05::solve();
time = _print_elapsed(time);
println!("\nDay 6");
days::d06::solve();
time = _print_elapsed(time);
println!("\nDay 7");
days::d07::solve();
time = _print_elapsed(time);
println!("\nDay 8");
days::d08::solve();
time = _print_elapsed(time);
println!("\nDay 9");
days::d09::solve();
time = _print_elapsed(time);
println!("\nDay 10");
days::d10::solve();
time = _print_elapsed(time);
println!("\nDay 11");
days::d11::solve();
time = _print_elapsed(time);
println!("\nDay 12");
days::d12::solve();
time = _print_elapsed(time);
println!("\nDay 13");
days::d13::solve();
time = _print_elapsed(time);
println!("\nDay 14");
days::d14::solve();
time = _print_elapsed(time);
println!("\nDay 15");
days::d15::solve();
time = _print_elapsed(time);
println!("\nDay 16");
days::d16::solve();
time = _print_elapsed(time);
println!("\nDay 17");
days::d17::solve();
time = _print_elapsed(time);
println!("\nDay 18");
days::d18::solve();
time = _print_elapsed(time);
println!("\nDay 19");
days::d19::solve();
time = _print_elapsed(time);
println!("\nDay 20");
days::d20::solve();
time = _print_elapsed(time);
println!("\nDay 21");
days::d21::solve();
time = _print_elapsed(time);
println!("\nDay 22");
days::d22::solve();
time = _print_elapsed(time);
println!("\nDay 23");
days::d23::solve();
time = _print_elapsed(time);
println!("\nDay 24");
days::d24::solve();
time = _print_elapsed(time);
println!("\nDay 25");
days::d25::solve();
_print_elapsed(time);
println!("\nTotal elapsed: {}ms", start.elapsed().as_millis())
}
fn _print_elapsed(time: Instant) -> Instant {
println!(
" Elapsed: {}.{}ms",
time.elapsed().as_millis(),
time.elapsed().as_micros() % 1000
);
Instant::now()
}