Files
AdventOfCode2025/src/day03/part03a.rs

26 lines
697 B
Rust

use iter_first_max::IterFirstMaxExt;
pub fn solve(puzzle: &str) -> u64 {
let mut solution: u64 = 0;
puzzle.lines().for_each(|battery_bank| {
let batteries = battery_bank
.chars()
.map(|c| c as u8 - 0x30)
.collect::<Vec<u8>>();
let (i, biggest_battery) = batteries
.iter()
.enumerate()
.first_max_by_key(|(_, v)| *v)
.unwrap();
solution += if i < battery_bank.len() - 1 {
10 * biggest_battery + batteries[i + 1..].iter().max().unwrap()
} else {
10 * batteries[..i].iter().max().unwrap() + biggest_battery
} as u64;
});
solution
}