diff --git a/src/day3/mod.rs b/src/day3/mod.rs index 621b7f0..ffda911 100644 --- a/src/day3/mod.rs +++ b/src/day3/mod.rs @@ -2,7 +2,7 @@ use super::utils::Part; use regex::Regex; use std::ops::Range; -use log::debug; +use log::{debug, trace}; #[derive(Debug)] @@ -52,6 +52,7 @@ pub fn solve(input: Vec, part: Part) -> u32 { for (i, line) in input.iter().enumerate() { + dataset.push(line.chars().collect()); for capture in regex.captures_iter(line) { if let Some(capture) = capture.get(0) { matches.push(Match { @@ -63,33 +64,32 @@ pub fn solve(input: Vec, part: Part) -> u32 { }); } } - dataset.push(line.chars().collect()); } - let max_x = dataset.first().unwrap().len() - 1; + let max_x = dataset.first().unwrap().len(); for mut item in &mut matches { let range = (item.range.start.saturating_sub(1))..(max_x.min(item.range.end+1)); let mut b1 = false; let mut b3 = false; - debug!("Checking for {}", item.value); + debug!("Checking for {} [{}-{}/{}]", item.value, range.start, range.end, max_x); if item.line >= 1 { b1 = is_symbol(dataset.get(item.line-1).unwrap(), range.to_owned()); item.gears.append(&mut find_gears(dataset.get(item.line-1).unwrap(), range.to_owned(), item.line-1)); - debug!("\tChecking line #{} - {}\t'{:?}'", item.line-1, b1, &dataset.get(item.line-1).unwrap()[range.to_owned()]); + debug!("Checking line #{} - {}\t{}", item.line-1, b1, &dataset.get(item.line-1).unwrap()[range.to_owned()].iter().collect::()); } let b2 = is_symbol(dataset.get(item.line).unwrap(), range.to_owned()); item.gears.append(&mut find_gears(dataset.get(item.line).unwrap(), range.to_owned(), item.line)); - debug!("\tChecking line #{} - {}\t'{:?}'", item.line, b2, &dataset.get(item.line).unwrap()[range.to_owned()]); + debug!("Checking line #{} - {}\t{}", item.line, b2, &dataset.get(item.line).unwrap()[range.to_owned()].iter().collect::()); if item.line < dataset.len() - 1 { b3 = is_symbol(dataset.get(item.line+1).unwrap(), range.to_owned()); item.gears.append(&mut find_gears(dataset.get(item.line+1).unwrap(), range.to_owned(), item.line+1)); - debug!("\tChecking line #{} - {}\t'{:?}'", item.line+1, b1, &dataset.get(item.line+1).unwrap()[range.to_owned()]); + debug!("Checking line #{} - {}\t{}", item.line+1, b3, &dataset.get(item.line+1).unwrap()[range.to_owned()].iter().collect::()); } item.is_valid = b1 || b2 || b3; @@ -107,7 +107,7 @@ pub fn solve(input: Vec, part: Part) -> u32 { for gears_point in &item.gears { for other_match in &matches[(i+1)..] { if other_match.gears.contains(gears_point) { - debug!("Match gear at {:?} -> {} * {}", gears_point, item.value, other_match.value); + trace!("Match gear at {:?} -> {} * {}", gears_point, item.value, other_match.value); sum_gears += item.value * other_match.value; } }