use std::time::{Instant}; use color_eyre::eyre; mod lib; use lib::load; mod day12; fn main() -> eyre::Result<()> { let data = load("data/12.txt")?; let start = Instant::now(); let (one, two) = day12::run(&data)?; let (dur, unit) = format_ns(start.elapsed().as_nanos()); let precision = 2.0 - dur.log10().floor(); println!( "One: {0}\nTwo: {1}\nCompleted in {2:.4$}{3}", one, two, dur, unit, precision as usize ); Ok(()) } fn format_ns(ns: u128) -> (f64, &'static str) { const UNITS: [&str; 4] = ["ns", "us", "ms", "s"]; let mut display_n = ns as f64; // let mut unit_idx = 0; while display_n > 1000.0 && unit_idx < 4 { display_n /= 1000.0; unit_idx += 1 } (display_n, UNITS[unit_idx]) }