puzzles/advent_of_code_2024/src/day4/part2.rs
2024-12-14 14:51:40 +01:00

27 lines
1.1 KiB
Rust

pub fn solve(input: &str) {
let grid = input.lines().map(|str| str.as_bytes()).collect::<Vec<_>>();
let width = grid[0].len() as i32;
let height = grid.len() as i32;
let words = ((b'M', b'A', b'S'), (b'S', b'A', b'M'));
let mut matches = 0;
for xpos in 1..(width - 1) {
for ypos in 1..(height - 1) {
if grid[xpos as usize][ypos as usize] == b'A' {
let left = (grid[(xpos - 1) as usize][(ypos - 1) as usize],
grid[(xpos) as usize][(ypos) as usize],
grid[(xpos + 1) as usize][(ypos + 1) as usize]);
let right = (grid[(xpos + 1) as usize][(ypos - 1) as usize],
grid[(xpos) as usize][(ypos) as usize],
grid[(xpos - 1) as usize][(ypos + 1) as usize]);
if (left == words.0 || left == words.1) && (right == words.0 || right == words.1) {
matches += 1;
}
}
}
}
println!("matches: {}", matches);
}