my solutions to advent of code
aoc advent-of-code

rust version

aylac.top fb5c837a cd2892dd

verified
Changed files
+21 -9
2025
3
rust
src
+21 -9
2025/3/rust/src/main.rs
··· 1 - fn solve(input: &Vec<Vec<u32>>, digits: usize) { 2 input.iter().fold(0, |acc, bank| { 3 - let n = (0..digits).fold((0, bank), |(number, bank), i| { 4 - let max = bank[0..bank.len() - i] 5 - .iter() 6 - .max() 7 - .unwrap_or(bank.last().unwrap()); 8 9 - return (number * 10 + max, bank[0..bank.len() - max_loc - 1]); 10 }); 11 acc + n 12 }) 13 } 14 15 fn main() { 16 - let input: Vec<Vec<u32>> = include_str!("../../input.txt") 17 .trim() 18 .split("\n") 19 - .map(|bank| bank.chars().map(|s| s.to_digit(10).unwrap()).collect()) 20 .collect(); 21 }
··· 1 + // fun fact for this version, my biggest bug was integer overflow when i was using u32 because im not accustumed to this shit 2 + 3 + fn solve(input: &Vec<Vec<u64>>, digits: usize) -> u64 { 4 input.iter().fold(0, |acc, bank| { 5 + let bank_len = bank.len(); 6 + let (n, _) = (0..digits).rfold((0, 0), |(number, bank_index), i| { 7 + let (loc, max) = bank[bank_index..bank_len - i].iter().enumerate().fold( 8 + (0_usize, &0_u64), 9 + |(maxi, max), (i, n)| { 10 + if n > max { (i, n) } else { (maxi, max) } 11 + }, 12 + ); 13 14 + ((number * 10) + max, bank_index + loc + 1) 15 }); 16 acc + n 17 }) 18 } 19 20 fn main() { 21 + let input: Vec<Vec<u64>> = include_str!("../../input.txt") 22 .trim() 23 .split("\n") 24 + .map(|bank| { 25 + bank.chars() 26 + .map(|s| s.to_digit(10).unwrap() as u64) 27 + .collect() 28 + }) 29 .collect(); 30 + 31 + println!("Part 1: {}", solve(&input, 2)); 32 + println!("Part 1: {}", solve(&input, 12)); 33 }