From b59fb691913017d4b3cc032cebcb990ab9315438 Mon Sep 17 00:00:00 2001 From: mhsn Date: Sat, 16 Aug 2025 16:09:20 +0100 Subject: rust 2024 04: redo p2 --- 2024/04/rust/src/main.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/2024/04/rust/src/main.rs b/2024/04/rust/src/main.rs index e2810bb..191e461 100644 --- a/2024/04/rust/src/main.rs +++ b/2024/04/rust/src/main.rs @@ -54,20 +54,29 @@ fn silver(grid: &Grid) -> usize { let xmases: Vec> = dirs .iter() .map(|(dx, dy)| { - (1..4) + (0..4) .map(move |n| (dx * n, dy * n)) - .zip("MAS".chars()) + .zip("XMAS".chars()) .collect() }) .collect(); grid.pts() - .filter(|&p| grid.at(p).is_some_and(|&c| c == 'X')) .flat_map(|p| xmases.iter().map(move |xmas| grid.check(p, xmas.iter()))) .filter(|p| *p) .count() } fn gold(grid: &Grid) -> usize { - 0 + let dirs = vec![(-1, -1), (1, -1), (0, 0), (-1, 1), (1, 1)]; + + let xmases: Vec> = vec!["MMASS", "SMASM", "SSAMM", "MSAMS"] + .iter() + .map(|x| dirs.clone().into_iter().zip(x.chars()).collect()) + .collect(); + + grid.pts() + .flat_map(|p| xmases.iter().map(move |xmas| grid.check(p, xmas.iter()))) + .filter(|p| *p) + .count() } -- cgit v1.2.3