27 lines
1.1 KiB
Rust
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);
|
|
}
|