my solutions to advent of code
aoc advent-of-code
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 3fn 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 20fn 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 2: {}", solve(&input, 12)); 33}