Added Day 6 Part 2
This commit is contained in:
@@ -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<Chars<'_>> = Vec::new();
|
||||
let mut problems: Vec<Problem> = 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::<u64>().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::<String>();
|
||||
|
||||
let parsed = reversed.parse::<u64>();
|
||||
//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::<u64>(),
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user