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]
8 .iter()
9 .enumerate()
10 .fold((0_usize, &0_u64), |(maxi, max), (i, n)| {
11 if n > max { (i, n) } else { (maxi, max) }
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}