From 569e7de087cdef3576b0e0baccca86f542b4ecc9 Mon Sep 17 00:00:00 2001 From: Jos van Goor Date: Sat, 6 Dec 2025 16:00:04 +0100 Subject: [PATCH] Advent 2025 Day 6 Part 2 --- advent_of_code_2025/src/day6/part2.rs | 56 +++++++++++++++++---------- advent_of_code_2025/src/main.rs | 4 +- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/advent_of_code_2025/src/day6/part2.rs b/advent_of_code_2025/src/day6/part2.rs index 3f0e054..d2a86c3 100644 --- a/advent_of_code_2025/src/day6/part2.rs +++ b/advent_of_code_2025/src/day6/part2.rs @@ -1,34 +1,50 @@ pub fn solve(input: &str) { - let lines = input.lines().collect::>(); + let transposed = input.lines().map(|line| line.as_bytes()).collect::>(); + let mut lines = Vec::new(); - let rows = lines[..(lines.len() - 1)].iter().map(|line| { - line.split(" ").filter(|str| !str.is_empty()).map(|num| { num.parse::().unwrap() }).collect::>() + for idx in 0..transposed[0].len() { + let mut line = Vec::with_capacity(transposed.len()); + for row in transposed.iter() { + line.push(row[idx]); + } + lines.push(line); + } + + let problems = lines.split(|line| { + line[..] == [32].repeat(line.len()) }).collect::>(); - let operators = lines.last().unwrap().bytes().filter(|b| *b != b' ').collect::>(); - - // println!("rows: {rows:?}"); - // println!("operators: {operators:?}"); + let mut sum_of_results = 0; - let mut sum_of_operations = 0; - - for (idx, operator) in operators.iter().enumerate() { - if *operator == b'*' { + for problem in problems { + let op = problem.first().unwrap().last().unwrap(); + + if *op == b'*' { let mut result = 1; - for row in rows.iter() { - result *= row[idx]; + + for line in problem.iter() { + let cleaned = line[..(line.len() - 1)].iter().filter(|byte| **byte != b' ').copied().collect::>(); + // println!("cleaned: {cleaned:?}"); + let parsed = unsafe { str::from_utf8_unchecked(&cleaned) }.parse::().unwrap(); + // println!("parsed: {}", parsed); + result *= parsed; } - // println!("row {idx} (*): {result}"); - sum_of_operations += result; + sum_of_results += result; + // println!("result: {}", result); } else { let mut result = 0; - for row in rows.iter() { - result += row[idx]; + + for line in problem.iter() { + let cleaned = line[..(line.len() - 1)].iter().filter(|byte| **byte != b' ').copied().collect::>(); + // println!("cleaned: {cleaned:?}"); + let parsed = unsafe { str::from_utf8_unchecked(&cleaned) }.parse::().unwrap(); + // println!("parsed: {}", parsed); + result += parsed; } - // println!("row {idx} (+): {result}"); - sum_of_operations += result; + sum_of_results += result; + // println!("result: {}", result); } } - println!("sum of operations: {sum_of_operations}"); + println!("sum of operations: {sum_of_results}"); } diff --git a/advent_of_code_2025/src/main.rs b/advent_of_code_2025/src/main.rs index 6f6e5c7..6908767 100644 --- a/advent_of_code_2025/src/main.rs +++ b/advent_of_code_2025/src/main.rs @@ -1,5 +1,5 @@ use paste::paste; mod utility; -solve_day!{2} -// test_day!{2} +solve_day!{6} +// test_day!{6}