Updated logger

This commit is contained in:
Pascal Phelipot 2023-12-03 21:10:23 +01:00
parent cde55316ac
commit f8e9aaf818
1 changed files with 8 additions and 8 deletions

View File

@ -2,7 +2,7 @@ use super::utils::Part;
use regex::Regex; use regex::Regex;
use std::ops::Range; use std::ops::Range;
use log::debug; use log::{debug, trace};
#[derive(Debug)] #[derive(Debug)]
@ -52,6 +52,7 @@ pub fn solve(input: Vec<String>, part: Part) -> u32 {
for (i, line) in input.iter().enumerate() { for (i, line) in input.iter().enumerate() {
dataset.push(line.chars().collect());
for capture in regex.captures_iter(line) { for capture in regex.captures_iter(line) {
if let Some(capture) = capture.get(0) { if let Some(capture) = capture.get(0) {
matches.push(Match { matches.push(Match {
@ -63,33 +64,32 @@ pub fn solve(input: Vec<String>, 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 { for mut item in &mut matches {
let range = (item.range.start.saturating_sub(1))..(max_x.min(item.range.end+1)); let range = (item.range.start.saturating_sub(1))..(max_x.min(item.range.end+1));
let mut b1 = false; let mut b1 = false;
let mut b3 = 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 { if item.line >= 1 {
b1 = is_symbol(dataset.get(item.line-1).unwrap(), range.to_owned()); 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)); 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::<String>());
} }
let b2 = is_symbol(dataset.get(item.line).unwrap(), range.to_owned()); 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)); 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::<String>());
if item.line < dataset.len() - 1 { if item.line < dataset.len() - 1 {
b3 = is_symbol(dataset.get(item.line+1).unwrap(), range.to_owned()); 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)); 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::<String>());
} }
item.is_valid = b1 || b2 || b3; item.is_valid = b1 || b2 || b3;
@ -107,7 +107,7 @@ pub fn solve(input: Vec<String>, part: Part) -> u32 {
for gears_point in &item.gears { for gears_point in &item.gears {
for other_match in &matches[(i+1)..] { for other_match in &matches[(i+1)..] {
if other_match.gears.contains(gears_point) { 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; sum_gears += item.value * other_match.value;
} }
} }