done with day8, part1
This commit is contained in:
parent
fd29d5cf87
commit
ed0c44e2b1
3 changed files with 83 additions and 0 deletions
|
@ -11,3 +11,4 @@ aoc-runner-derive = "0.3"
|
||||||
lazy_static = "1.4.0"
|
lazy_static = "1.4.0"
|
||||||
#itertools = "0.10.5"
|
#itertools = "0.10.5"
|
||||||
regex = "1.7"
|
regex = "1.7"
|
||||||
|
ndarray = "0.15"
|
81
2022-aoc/src/d8.rs
Normal file
81
2022-aoc/src/d8.rs
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
use std::collections::HashSet;
|
||||||
|
|
||||||
|
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 {
|
||||||
|
let nrows = input.lines().map(|_| ()).collect::<Vec<_>>().len();
|
||||||
|
let ncols = input.lines().next().unwrap().len();
|
||||||
|
let shape = (nrows, ncols);
|
||||||
|
let mut arr = Array2::zeros(shape);
|
||||||
|
for (row, line) in input.lines().enumerate() {
|
||||||
|
for (col, tree) in line.chars().enumerate() {
|
||||||
|
arr[[row, col]] = tree.to_digit(10).unwrap() as i8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
arr
|
||||||
|
}
|
||||||
|
|
||||||
|
#[aoc_run(day8, part1)]
|
||||||
|
fn part1(input: &Forest) -> usize {
|
||||||
|
let mut viz = HashSet::new();
|
||||||
|
for (ridx, row) in input.rows().into_iter().enumerate() {
|
||||||
|
let mut max = -1;
|
||||||
|
for (cidx, &tree) in row.as_slice().unwrap().iter().enumerate() {
|
||||||
|
if tree > max {
|
||||||
|
let addr = (ridx, cidx);
|
||||||
|
viz.insert(addr);
|
||||||
|
max = tree;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
max = -1;
|
||||||
|
for (cidx, &tree) in row.as_slice().unwrap().iter().enumerate().rev() {
|
||||||
|
if tree > max {
|
||||||
|
viz.insert((ridx, cidx));
|
||||||
|
max = tree;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (cidx, col) in input.columns().into_iter().enumerate() {
|
||||||
|
let mut max = -1;
|
||||||
|
for (ridx, &tree) in col
|
||||||
|
.as_standard_layout()
|
||||||
|
.as_slice()
|
||||||
|
.unwrap()
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
{
|
||||||
|
if tree > max {
|
||||||
|
viz.insert((ridx, cidx));
|
||||||
|
max = tree;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
max = -1;
|
||||||
|
for (ridx, &tree) in col
|
||||||
|
.as_standard_layout()
|
||||||
|
.as_slice()
|
||||||
|
.unwrap()
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.rev()
|
||||||
|
{
|
||||||
|
if tree > max {
|
||||||
|
viz.insert((ridx, cidx));
|
||||||
|
max = tree;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
viz.len()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[aoc_run(day8, part2)]
|
||||||
|
fn part2(input: &Forest) -> usize {
|
||||||
|
0
|
||||||
|
}
|
|
@ -7,5 +7,6 @@ mod d4;
|
||||||
mod d5;
|
mod d5;
|
||||||
mod d6;
|
mod d6;
|
||||||
mod d7;
|
mod d7;
|
||||||
|
mod d8;
|
||||||
|
|
||||||
aoc_lib! { year = 2022 }
|
aoc_lib! { year = 2022 }
|
||||||
|
|
Loading…
Reference in a new issue