fn main() { let mut hill: Vec = Vec::new(); let contents = std::fs::read_to_string("input1").unwrap(); for s in contents.lines() { hill.push(s.parse::().unwrap()); } let rounds = [[1, 1], [3, 1], [5, 1], [7, 1], [1, 2]]; // let rounds = [[1, 2]]; let mut hit_trees = Vec::new(); for r in rounds.iter() { let right_rule = r[0]; let down_rule = r[1]; let mut right_pos = 0; let mut down_pos = 0; let mut trees: i64 = 0; loop { for _ in 0..right_rule { if right_pos == hill[down_pos].len() - 1 { right_pos = 0; } else { right_pos += 1; } } down_pos += down_rule; if hill[down_pos].chars().nth(right_pos).unwrap() == '#' { trees += 1; } if hill.len() - 1 == down_pos { break; } } hit_trees.push(trees); } let total = hit_trees[0] * hit_trees[1] * hit_trees[2] * hit_trees[3] * hit_trees[4]; print!("You hit {} total trees!\n", total); }