AoC2020/src/bin/day3.rs

44 lines
1007 B
Rust

use std::error::Error;
use std::fs::File;
use std::io::{self, BufRead};
use std::vec::Vec;
fn main() -> Result<(), Box<dyn Error>> {
let file = File::open("inputs/day3.txt")?;
let lines = io::BufReader::new(file).lines();
let trees: Vec<Vec<bool>> = lines
.map(|l| l.unwrap().chars().map(|c| c == '#').collect())
.collect();
let width = trees[0].len();
let height = trees.len();
println!("Map dimensions {} x {}", width, height);
let slopes = vec![(1, 1), (3, 1), (5, 1), (7, 1), (1, 2)];
let mut overall = 1u32;
for (x_step, y_step) in slopes.iter() {
let mut x = 0;
let mut y = 0;
let mut count = 0;
while y < height {
if trees[y][x % width] {
count += 1
}
x += x_step;
y += y_step;
}
println!("Count for {} {} : {}", x_step, y_step, count);
overall *= count;
}
println!("Final result: {}", overall);
Ok(())
}