Updated logger
This commit is contained in:
parent
cde55316ac
commit
f8e9aaf818
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue