Skip to content
Snippets Groups Projects
Commit 53613b34 authored by Falk Rehse's avatar Falk Rehse
Browse files

Day 8-2

parent fc0b779e
No related branches found
No related tags found
No related merge requests found
pub fn solve_from_str(input: &str) -> u32 {
let trees = input
.split('\n')
.map(|row| {
row.chars()
.map(|tree| tree.to_digit(10).expect("Expected number!"))
.collect()
})
.collect();
solve(&trees)
}
pub fn solve(trees: &Vec<Vec<u32>>) -> u32 {
let mut max = 0;
for i in 0..trees.len() {
for k in 0..trees[i].len() {
let scenic_score = view_distance_up(trees, i, k)
* view_distance_down(trees, i, k)
* view_distance_left(trees, i, k)
* view_distance_right(trees, i, k);
if scenic_score > max {
max = scenic_score;
}
}
}
max
}
fn view_distance_up(trees: &Vec<Vec<u32>>, i: usize, k: usize) -> u32 {
let tree_height = trees[i][k];
let mut view_distance = 0;
for l in (0..i).rev() {
view_distance += 1;
if trees[l][k] >= tree_height {
break;
}
}
return view_distance;
}
fn view_distance_down(trees: &Vec<Vec<u32>>, i: usize, k: usize) -> u32 {
let tree_height = trees[i][k];
let mut view_distance = 0;
for l in i + 1..trees.len() {
view_distance += 1;
if trees[l][k] >= tree_height {
break;
}
}
return view_distance;
}
fn view_distance_left(trees: &Vec<Vec<u32>>, i: usize, k: usize) -> u32 {
let tree_height = trees[i][k];
let mut view_distance = 0;
for l in (0..k).rev() {
view_distance += 1;
if trees[i][l] >= tree_height {
break;
}
}
return view_distance;
}
fn view_distance_right(trees: &Vec<Vec<u32>>, i: usize, k: usize) -> u32 {
let tree_height = trees[i][k];
let mut view_distance = 0;
for l in k + 1..trees[i].len() {
view_distance += 1;
if trees[i][l] >= tree_height {
break;
}
}
return view_distance;
}
......@@ -10,13 +10,15 @@ mod day_5_1;
mod day_5_2;
mod day_6_1;
mod day_6_2;
mod day_8_1;
mod day_8_2;
use std::fs;
fn main() {
let input = fs::read_to_string("input").expect("Could not read input!");
let solution = day_6_2::solve_from_str(input.as_str());
let solution = day_8_2::solve_from_str(input.as_str());
println!("Solution: {}", solution);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment