From 4cc13144f0368dec0d658ab0574d676bb89b879d Mon Sep 17 00:00:00 2001 From: Russell Date: Mon, 2 Dec 2024 13:55:29 -0500 Subject: [PATCH] day 1 pt 2 --- day01/src/main.rs | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/day01/src/main.rs b/day01/src/main.rs index 453f5dc..ea50e61 100644 --- a/day01/src/main.rs +++ b/day01/src/main.rs @@ -5,7 +5,7 @@ use std::io::{self, BufRead}; use std::path::Path; use regex::Regex; -fn solve_part1() { +fn solve() { println!("Day 01: Part 1"); println!("GOAL: Find the total distance between the left list and the right list"); println!("ANSWER: What is the total distance between your lists?"); @@ -18,9 +18,8 @@ fn solve_part1() { for line in lines.flatten() { let vals: Vec<&str> = re_split.split(&line).collect(); - // println!("{} and {}", vals[0], vals[1]); - let a = vals[0].parse::().unwrap(); - let b = vals[1].parse::().unwrap(); + let a = vals[0].parse::().unwrap(); + let b = vals[1].parse::().unwrap(); vec_a.push(a); vec_b.push(b); } @@ -30,21 +29,29 @@ fn solve_part1() { for i in 0..1000 { let diff = vec_a[i].abs_diff(vec_b[i]); result += diff; - println!("Line {}: abs({} - {}) = {}", i+1, vec_a[i], vec_b[i], diff) + // println!("Line {}: abs({} - {}) = {}", i+1, vec_a[i], vec_b[i], diff) } - } - println!("Total {result}"); -} + println!("Total {result}"); -fn solve_part2 () { - println!("Day 01: Part 2"); - println!("GOAL: #GOAL2#"); - println!("ANSWER: #ANSWER2#"); + println!("Day 01: Part 2"); + println!("GOAL: Calculate a total similarity score by adding up each number in the left list after multiplying it by the number of times that number appears in the right list"); + println!("ANSWER: What is their similarity score?"); + + result = 0; + for i in 0..1000 { + let needle = vec_a[i]; + let found = vec_b.iter().filter(|&&b| b == needle).count() as u32; + let similarity = found * needle; + result += similarity; + + println!("Line {}: {} found {} times = {}, total {}", i + 1, needle, found, similarity, result); + } + println!("Total {result}"); + } } fn main() { - solve_part1() - // solve_part2() + solve() } fn read_lines

(filename: P) -> io::Result>>