From 16161f66600ec8d289087c02153d5c9c7cf2cd73 Mon Sep 17 00:00:00 2001 From: Dylan Thies Date: Sat, 4 Oct 2025 10:33:33 -0400 Subject: [PATCH] doing some clippy and testing gittea --- 2024/Cargo.lock | 47 +++++++++++++++++++++++++++++++++++++++++ 2024/day-6/src/part1.rs | 36 ++++++++++++++++++++++--------- 2 files changed, 73 insertions(+), 10 deletions(-) diff --git a/2024/Cargo.lock b/2024/Cargo.lock index bd914cc..d1c1db0 100644 --- a/2024/Cargo.lock +++ b/2024/Cargo.lock @@ -161,6 +161,47 @@ dependencies = [ "thiserror", ] +[[package]] +name = "day-4" +version = "2024.0.0" +dependencies = [ + "dhat", + "error-stack", + "glam", + "itertools", + "log", + "nom", + "test-log", + "thiserror", +] + +[[package]] +name = "day-5" +version = "2024.0.0" +dependencies = [ + "dhat", + "error-stack", + "itertools", + "log", + "nom", + "test-log", + "thiserror", +] + +[[package]] +name = "day-6" +version = "2024.0.0" +dependencies = [ + "dhat", + "error-stack", + "glam", + "itertools", + "log", + "nom", + "test-log", + "thiserror", +] + [[package]] name = "dhat" version = "0.3.3" @@ -321,6 +362,12 @@ version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +[[package]] +name = "glam" +version = "0.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc46dd3ec48fdd8e693a98d2b8bafae273a2d54c1de02a2a7e3d57d501f39677" + [[package]] name = "glob" version = "0.3.1" diff --git a/2024/day-6/src/part1.rs b/2024/day-6/src/part1.rs index 421ff60..098a378 100644 --- a/2024/day-6/src/part1.rs +++ b/2024/day-6/src/part1.rs @@ -63,7 +63,7 @@ struct MyMap { } impl MyMap { - pub fn next_obstacle(&self, start_pos: &IVec2, direction: &Direction) -> Option<&IVec2> { + pub fn next_obstacle(&self, start_pos: IVec2, direction: &Direction) -> Option<&IVec2> { self.obstacles .iter() .filter(|obstacle| match direction { @@ -73,10 +73,10 @@ impl MyMap { Direction::West => obstacle.x == start_pos.x && obstacle.y < start_pos.y, }) .fold(None, |acc, obstacle| match direction { - Direction::North if acc == None || obstacle.x > acc.unwrap().x => Some(obstacle), - Direction::East if acc == None || obstacle.y < acc.unwrap().y => Some(obstacle), - Direction::South if acc == None || obstacle.x < acc.unwrap().x => Some(obstacle), - Direction::West if acc == None || obstacle.y > acc.unwrap().y => Some(obstacle), + Direction::North if acc.is_none() || obstacle.x > acc.unwrap().x => Some(obstacle), + Direction::East if acc.is_none() || obstacle.y < acc.unwrap().y => Some(obstacle), + Direction::South if acc.is_none() || obstacle.x < acc.unwrap().x => Some(obstacle), + Direction::West if acc.is_none() || obstacle.y > acc.unwrap().y => Some(obstacle), _ => acc, }) } @@ -87,6 +87,9 @@ impl MyMap { /// /// # Errors /// - `ParseError` there was an issue with the parser +/// +/// # Panics +/// - it just does pub fn part1(input: &str) -> Result { //let input = Span::new(input); //TODO figure out how to real error @@ -99,7 +102,7 @@ pub fn part1(input: &str) -> Result { && (guard_pos.y as u32) < map.width { let _ = visited.insert(guard_pos); - if let Some(next_obstacle) = map.next_obstacle(&guard_pos, &guard_dir) { + if let Some(next_obstacle) = map.next_obstacle(guard_pos, &guard_dir) { // println!("Hit row {}, col {} going {:?}", next_obstacle.x, next_obstacle.y, guard_dir); match guard_dir { Direction::North => { @@ -130,7 +133,7 @@ pub fn part1(input: &str) -> Result { visited.insert(x); }); }, - }; + } guard_pos = next_obstacle - &guard_dir; } else { let new_pos = match guard_dir { @@ -169,7 +172,7 @@ pub fn part1(input: &str) -> Result { visited.insert(x); }); } - }; + } guard_pos = new_pos; //break } @@ -187,12 +190,25 @@ pub fn part1(input: &str) -> Result { print!("\n"); }*/ } + for row in 0.. map.height.try_into().unwrap() { + for col in 0..map.width.try_into().unwrap() { + let pos = IVec2::new(row, col); + if visited.contains(&pos) { + print!("X"); + }else if map.obstacles.contains(&pos) { + print!("#"); + } else { + print!("."); + } + } + println!(); + } - Ok(visited.iter().count().to_string()) + Ok(visited.len().to_string()) } fn parse_input(input: &str) -> (IVec2, MyMap) { - let (pos, height, width, obstacles) = input.lines().into_iter().enumerate().fold( + let (pos, height, width, obstacles) = input.lines().enumerate().fold( (IVec2::ZERO, 0, 0, HashSet::new()), |mut acc, (row_no, row)| { acc.1 = row_no.try_into().unwrap();