From 08179528e9c8c18e93f814bf894147e3c96e38ce Mon Sep 17 00:00:00 2001 From: Christian Ulrich Date: Wed, 14 Dec 2022 02:03:16 +0100 Subject: [PATCH] forgot to push part2.rs --- day12/part2.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 day12/part2.rs diff --git a/day12/part2.rs b/day12/part2.rs new file mode 100644 index 0000000..3f5c57b --- /dev/null +++ b/day12/part2.rs @@ -0,0 +1,36 @@ +// Copyright 2022 Christian Ulrich +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// usage: ./part1 < input + +pub mod common; + +use common::Map; + +fn main() -> Result<(), &'static str> { + let map = Map::from_stdin()?; + let mut result = usize::MAX; + for pos in map.lowest_positions() { + let neighbors = map.neighbors(pos).unwrap(); + if neighbors + .iter() + .any(|n| map.square_height(*n).unwrap() as char == 'b') + { + result = usize::min(result, map.shortest_path(Some(pos)).count()); + } + } + println!("{result}"); + Ok(()) +}