done with part 2
This commit is contained in:
parent
ed0c44e2b1
commit
f8e2ed0cb7
1 changed files with 34 additions and 2 deletions
|
@ -5,7 +5,6 @@ use aoc_runner_derive::{aoc as aoc_run, aoc_generator};
|
|||
use ndarray::prelude::*;
|
||||
|
||||
type Forest = Array2<i8>;
|
||||
type Tree = (i8, i8);
|
||||
|
||||
#[aoc_generator(day8)]
|
||||
fn parse_input_day1(input: &str) -> Forest {
|
||||
|
@ -77,5 +76,38 @@ fn part1(input: &Forest) -> usize {
|
|||
|
||||
#[aoc_run(day8, part2)]
|
||||
fn part2(input: &Forest) -> usize {
|
||||
0
|
||||
let nrows = input.nrows();
|
||||
let ncols = input.ncols();
|
||||
let mut max = 0;
|
||||
for row in 0..nrows {
|
||||
for col in 0..ncols {
|
||||
let (e, w) = check_span(col, &input.row(row));
|
||||
let (n, s) = check_span(row, &input.column(col));
|
||||
max = (e * w * n * s).max(max);
|
||||
}
|
||||
}
|
||||
max
|
||||
}
|
||||
|
||||
fn check_span(addr: usize, span: &ArrayView1<i8>) -> (usize, usize) {
|
||||
let height = span[addr];
|
||||
let (mut a, mut b) = (0, 0);
|
||||
//
|
||||
let neg = span.slice(s![0..addr]);
|
||||
let pos = span.slice(s![addr..]);
|
||||
for e in neg.iter().rev() {
|
||||
a += 1;
|
||||
if *e >= height {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for e in pos.iter().skip(1) {
|
||||
b += 1;
|
||||
if *e >= height {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
(a, b)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue