From e8b494859b8502c7c657da1f601ce22db9034141 Mon Sep 17 00:00:00 2001 From: Johannes Date: Thu, 5 Dec 2024 18:30:51 +0100 Subject: [PATCH] add elapsed time for each day to output --- src/day05.rs | 34 ++++++++++++++++++++-------------- src/main.rs | 12 ++++++++++-- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/src/day05.rs b/src/day05.rs index 48e0b8b..a784a35 100644 --- a/src/day05.rs +++ b/src/day05.rs @@ -12,11 +12,11 @@ type RiddleResult = usize; fn part1(input: &str) -> RiddleResult { let (rules, books) = parse(input); - books.iter().filter(|book| { - valid_book(book, &rules) - }) - .map(|book| book[book.len() / 2].parse::().unwrap()) - .sum() + books + .iter() + .filter(|book| valid_book(book, &rules)) + .map(|book| book[book.len() / 2].parse::().unwrap()) + .sum() } fn valid_book(book: &[&str], rules: &[(&str, &str)]) -> bool { @@ -32,23 +32,29 @@ fn valid_book(book: &[&str], rules: &[(&str, &str)]) -> bool { fn parse(input: &str) -> (Vec<(&str, &str)>, Vec>) { let (a, b) = input.split_once("\n\n").unwrap(); - let rules = a.lines().map(|line| line.split_once("|").unwrap()).collect_vec(); - let books = b.lines().map(|line| line.split(",").collect_vec()).collect_vec(); + let rules = a + .lines() + .map(|line| line.split_once("|").unwrap()) + .collect_vec(); + let books = b + .lines() + .map(|line| line.split(",").collect_vec()) + .collect_vec(); (rules, books) } fn part2(input: &str) -> RiddleResult { let (rules, books) = parse(input); - books.iter().filter(|book| { - !valid_book(book, &rules) - }) - .map(|book| fix(book, &rules)) - .map(|book| book[book.len() / 2].parse::().unwrap()) - .sum() + books + .iter() + .filter(|book| !valid_book(book, &rules)) + .map(|book| fix(book, &rules)) + .map(|book| book[book.len() / 2].parse::().unwrap()) + .sum() } -fn fix<'a>(book: &'a[&str], rules: &[(&str, &str)]) -> Vec<&'a str> { +fn fix<'a>(book: &'a [&str], rules: &[(&str, &str)]) -> Vec<&'a str> { let mut b = book.iter().copied().collect_vec(); b.sort_unstable_by(|a, b| { if rules.contains(&(a, b)) { diff --git a/src/main.rs b/src/main.rs index 3e5c848..bdf8c8b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,7 @@ -use std::{collections::HashMap, env::args}; - use advent_of_rust_2024::*; use itertools::Itertools; +use std::time::Instant; +use std::{collections::HashMap, env::args}; fn main() { let mains: HashMap ()> = HashMap::from_iter([ @@ -18,7 +18,15 @@ fn main() { .sorted_by_key(|entry| entry.0) .for_each(|(d, f)| { println!("Day {d}:"); + let start = Instant::now(); f(); + let duration = start.elapsed(); + println!( + "{color}{italic}Took {duration:?}{reset_formatting}", + color = "\x1b[38;5;247m", + italic = "\x1b[3m", + reset_formatting = "\x1b[0m" + ); }); return; };