Implemented day 3 part 2 solution

This commit is contained in:
Egor 2023-12-05 17:11:20 +03:00
parent c4a5d93f6c
commit 370bd26513

View file

@ -1,6 +1,6 @@
fn main() {
let input = std::fs::read_to_string("input/3.txt").unwrap();
let (result1, result2) = (part1(&input), 0);
let (result1, result2) = (part1(&input), part2(&input));
println!("Day 3");
println!("Part 1: {}", result1);
println!("Part 2: {}", result2);
@ -59,3 +59,19 @@ fn part1(input: &str) -> u128 {
result
}
fn part2(input: &str) -> u128 {
let lines: Vec<&str> = input.lines().collect();
let mut result = 0_u128;
for i in 1..lines.len() - 1 {
let line = lines[i];
for (j, c) in line.chars().enumerate() {
if c != '*' { continue; }
let numbers = adjacent_numbers(&lines, i, j);
if numbers.len() != 2 { continue; }
let prod: u128 = numbers.iter().product();
result += prod;
}
}
result
}