You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.3 KiB
59 lines
1.3 KiB
use std::io::{self, BufRead};
|
|
|
|
fn get_number_of_trees(right: usize, down: usize, board: &[Vec<char>]) -> usize {
|
|
let mut x = 0;
|
|
let mut y = 0;
|
|
let mut trees = 0;
|
|
while x < board.len() {
|
|
let line = &board[x];
|
|
if line[y] == '#' {
|
|
trees = trees + 1;
|
|
}
|
|
|
|
x += down;
|
|
y = (y + right) % line.len();
|
|
}
|
|
|
|
trees
|
|
}
|
|
|
|
fn main() {
|
|
let stdin = io::stdin();
|
|
let board: Vec<Vec<_>> = stdin.lock().lines()
|
|
.map(|line| line.unwrap().chars().collect())
|
|
.collect();
|
|
|
|
let mut product = 1u64;
|
|
|
|
{
|
|
let result = get_number_of_trees(1, 1, &board);
|
|
println!("{}", result);
|
|
product = product * (result as u64);
|
|
}
|
|
|
|
{
|
|
let result = get_number_of_trees(3, 1, &board);
|
|
println!("{}", result);
|
|
product = product * (result as u64);
|
|
}
|
|
|
|
{
|
|
let result = get_number_of_trees(5, 1, &board);
|
|
println!("{}", result);
|
|
product = product * (result as u64);
|
|
}
|
|
|
|
{
|
|
let result = get_number_of_trees(7, 1, &board);
|
|
println!("{}", result);
|
|
product = product * (result as u64);
|
|
}
|
|
|
|
{
|
|
let result = get_number_of_trees(1, 2, &board);
|
|
println!("{}", result);
|
|
product = product * (result as u64);
|
|
}
|
|
|
|
println!("{}", product);
|
|
}
|
|
|