From 339b41d283487663f4c742c155a516a76ba6a387 Mon Sep 17 00:00:00 2001 From: Jason Date: Sat, 6 Dec 2025 23:58:33 -0600 Subject: [PATCH] Added Day 6 Part 2 --- src/day6/mod.rs | 47 ++++++++++++++++++++++++++++++++++++++++++----- src/main.rs | 2 ++ 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/day6/mod.rs b/src/day6/mod.rs index 1d720e7..66c9a64 100644 --- a/src/day6/mod.rs +++ b/src/day6/mod.rs @@ -1,4 +1,5 @@ -use std::{fs::File, io::Read}; +use core::num; +use std::{fs::File, io::Read, iter::Rev, str::Chars}; pub fn part_1(file:&str) -> u64 { let mut directory = "/home/jason/Programming/Rust/aoc2025/src/day6/".to_owned(); @@ -46,6 +47,7 @@ pub fn part_2(file:&str) -> u64 { handle.read_to_string(&mut file).unwrap(); let mut file_iter = file.lines().rev(); + let mut input_lines: Vec> = Vec::new(); let mut problems: Vec = Vec::new(); for elem in file_iter.next().unwrap().split_whitespace() { @@ -59,12 +61,41 @@ pub fn part_2(file:&str) -> u64 { } for lines in file_iter { - for (pos, num) in lines.split_whitespace().enumerate() { - let value = num.parse::().unwrap(); - problems[pos].numbers.push(value); + input_lines.push(lines.chars()); + } + + 'primary: for prob in problems.iter_mut() { + 'outer: loop { + let mut temp_num = String::new(); + //println!(""); + for digit_iter in input_lines.iter_mut() { + let temp_char = digit_iter.next(); + //println!("{:?}", temp_char); + let temp_digit = match temp_char { + Some(d) => if !d.is_whitespace() { + d + } else {continue}, + None => break 'outer + }; + + temp_num.push(temp_digit); + } + + let reversed = temp_num.chars().rev().collect::(); + + let parsed = reversed.parse::(); + //println!("{:?}", parsed); + let number = match parsed { + Ok(num) => num, + Err(_) => continue 'primary, + }; + + prob.numbers.push(number); } } + //println!("{:?}", problems); + let solution = problems.iter().fold(0, |acc, x| { let n = match x.operator { Operator::Add => x.numbers.iter().sum::(), @@ -93,7 +124,13 @@ mod tests { use super::*; #[test] - fn test() { + fn test_part_one() { assert_eq!(part_1("test.txt"), 4277556); } + + #[test] + fn test_part_two() { + assert_eq!(part_2("test.txt"), 3263827) + } + } \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index cd5a018..fef2772 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,4 +3,6 @@ mod day6; fn main() { let d6p1 = day6::part_1("input.txt"); println!("Day 6 Part 1 Solution: {}", d6p1); + let d6p2 = day6::part_2("input.txt"); + println!("Day 6 Part 2 Solution: {}", d6p2); } \ No newline at end of file