add elapsed time for each day to output
This commit is contained in:
22
src/day05.rs
22
src/day05.rs
@@ -12,9 +12,9 @@ type RiddleResult = usize;
|
|||||||
|
|
||||||
fn part1(input: &str) -> RiddleResult {
|
fn part1(input: &str) -> RiddleResult {
|
||||||
let (rules, books) = parse(input);
|
let (rules, books) = parse(input);
|
||||||
books.iter().filter(|book| {
|
books
|
||||||
valid_book(book, &rules)
|
.iter()
|
||||||
})
|
.filter(|book| valid_book(book, &rules))
|
||||||
.map(|book| book[book.len() / 2].parse::<RiddleResult>().unwrap())
|
.map(|book| book[book.len() / 2].parse::<RiddleResult>().unwrap())
|
||||||
.sum()
|
.sum()
|
||||||
}
|
}
|
||||||
@@ -32,17 +32,23 @@ fn valid_book(book: &[&str], rules: &[(&str, &str)]) -> bool {
|
|||||||
|
|
||||||
fn parse(input: &str) -> (Vec<(&str, &str)>, Vec<Vec<&str>>) {
|
fn parse(input: &str) -> (Vec<(&str, &str)>, Vec<Vec<&str>>) {
|
||||||
let (a, b) = input.split_once("\n\n").unwrap();
|
let (a, b) = input.split_once("\n\n").unwrap();
|
||||||
let rules = a.lines().map(|line| line.split_once("|").unwrap()).collect_vec();
|
let rules = a
|
||||||
let books = b.lines().map(|line| line.split(",").collect_vec()).collect_vec();
|
.lines()
|
||||||
|
.map(|line| line.split_once("|").unwrap())
|
||||||
|
.collect_vec();
|
||||||
|
let books = b
|
||||||
|
.lines()
|
||||||
|
.map(|line| line.split(",").collect_vec())
|
||||||
|
.collect_vec();
|
||||||
|
|
||||||
(rules, books)
|
(rules, books)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn part2(input: &str) -> RiddleResult {
|
fn part2(input: &str) -> RiddleResult {
|
||||||
let (rules, books) = parse(input);
|
let (rules, books) = parse(input);
|
||||||
books.iter().filter(|book| {
|
books
|
||||||
!valid_book(book, &rules)
|
.iter()
|
||||||
})
|
.filter(|book| !valid_book(book, &rules))
|
||||||
.map(|book| fix(book, &rules))
|
.map(|book| fix(book, &rules))
|
||||||
.map(|book| book[book.len() / 2].parse::<RiddleResult>().unwrap())
|
.map(|book| book[book.len() / 2].parse::<RiddleResult>().unwrap())
|
||||||
.sum()
|
.sum()
|
||||||
|
|||||||
12
src/main.rs
12
src/main.rs
@@ -1,7 +1,7 @@
|
|||||||
use std::{collections::HashMap, env::args};
|
|
||||||
|
|
||||||
use advent_of_rust_2024::*;
|
use advent_of_rust_2024::*;
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
|
use std::time::Instant;
|
||||||
|
use std::{collections::HashMap, env::args};
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let mains: HashMap<u8, fn() -> ()> = HashMap::from_iter([
|
let mains: HashMap<u8, fn() -> ()> = HashMap::from_iter([
|
||||||
@@ -18,7 +18,15 @@ fn main() {
|
|||||||
.sorted_by_key(|entry| entry.0)
|
.sorted_by_key(|entry| entry.0)
|
||||||
.for_each(|(d, f)| {
|
.for_each(|(d, f)| {
|
||||||
println!("Day {d}:");
|
println!("Day {d}:");
|
||||||
|
let start = Instant::now();
|
||||||
f();
|
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;
|
return;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user