summaryrefslogtreecommitdiff
path: root/src/bin/day4.rs
diff options
context:
space:
mode:
authorReiner Herrmann <reiner@reiner-h.de>2024-12-04 18:02:13 +0100
committerReiner Herrmann <reiner@reiner-h.de>2024-12-04 18:02:13 +0100
commit8b7c456ab86a7d792a83988947d62d33444b2a6a (patch)
tree3fa40cf50db3515a8425c21cec9f403db1b651b2 /src/bin/day4.rs
parent948b8da289041b2eaa571205686242deb77fd352 (diff)
day4 solution 2
Diffstat (limited to 'src/bin/day4.rs')
-rw-r--r--src/bin/day4.rs22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/bin/day4.rs b/src/bin/day4.rs
index 9a256a7..768ca25 100644
--- a/src/bin/day4.rs
+++ b/src/bin/day4.rs
@@ -5,7 +5,7 @@ static DAY: u8 = 4;
fn main() {
let input = advent::read_lines(DAY);
println!("{DAY}a: {}", count_xmas(&input));
- println!("{DAY}b: {}", 0);
+ println!("{DAY}b: {}", count_x_mas(&input));
}
fn get_letter_grid(input: &[String]) -> HashMap<(isize,isize), char> {
@@ -86,6 +86,25 @@ fn count_xmas(input: &[String]) -> usize {
xmas_count
}
+fn count_x_mas(input: &[String]) -> usize {
+ let grid = get_letter_grid(input);
+ let max_y = input.len() as isize;
+ let max_x = input[0].len() as isize;
+ let mut xmas_count = 0;
+
+ for x in 0..max_x {
+ for y in 0..max_y {
+ for word1 in ["MAS", "SAM"] {
+ for word2 in ["MAS", "SAM"] {
+ if word_se(&grid, x, y, word1) && word_sw(&grid, x+2, y, word2) { xmas_count += 1; }
+ }
+ }
+ }
+ }
+
+ xmas_count
+}
+
#[cfg(test)]
mod tests {
use super::*;
@@ -105,5 +124,6 @@ mod tests {
"MXMXAXMASX",
].iter().map(|&x| String::from(x)).collect::<Vec<_>>();
assert_eq!(count_xmas(&input), 18);
+ assert_eq!(count_x_mas(&input), 9);
}
}