day 4: part 2: rust
This commit is contained in:
parent
f543fd930d
commit
9fe58d5490
|
@ -0,0 +1,6 @@
|
||||||
|
[package]
|
||||||
|
name = "part1"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
|
@ -0,0 +1,38 @@
|
||||||
|
fn count_xmas(hay: Vec<Vec<char>>) -> u64 {
|
||||||
|
let mut count: u64 = 0;
|
||||||
|
let target: Vec<char> = vec!['M', 'A', 'S'];
|
||||||
|
for center_i in 1..(hay.len() - 1) {
|
||||||
|
for center_j in 1..(hay.len() - 1) {
|
||||||
|
let mut diag1: Vec<char> = Vec::new();
|
||||||
|
let mut diag2: Vec<char> = Vec::new();
|
||||||
|
for shift in 0..3 {
|
||||||
|
let shift: isize = shift as isize - 1;
|
||||||
|
diag1.push(hay[(center_i as isize + shift) as usize][(center_j as isize - shift) as usize]);
|
||||||
|
diag2.push(hay[(center_i as isize + shift) as usize][(center_j as isize + shift) as usize]);
|
||||||
|
}
|
||||||
|
let mut diag1_rev = diag1.clone();
|
||||||
|
let mut diag2_rev = diag2.clone();
|
||||||
|
diag1_rev.reverse();
|
||||||
|
diag2_rev.reverse();
|
||||||
|
if (diag1_rev == target || diag1 == target) && (diag2_rev == target || diag2 == target) {
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
count
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() -> std::io::Result<()> {
|
||||||
|
let mut hay: Vec<Vec<char>> = Vec::new();
|
||||||
|
for line in std::io::stdin().lines() {
|
||||||
|
let line = line.unwrap();
|
||||||
|
let mut row: Vec<char> = Vec::new();
|
||||||
|
for chr in line.chars() {
|
||||||
|
row.push(chr);
|
||||||
|
}
|
||||||
|
hay.push(row);
|
||||||
|
}
|
||||||
|
let c = count_xmas(hay);
|
||||||
|
println!("{}", c);
|
||||||
|
Ok(())
|
||||||
|
}
|
Loading…
Reference in New Issue