diff --git a/src/main.rs b/src/main.rs index c6be92f..4cf489c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,10 +32,12 @@ mod day14; mod day15; #[allow(dead_code)] mod day16; +#[allow(dead_code)] mod day17; +mod day18; fn main() { - day17::day17(); + day18::day18(); } pub fn input(day: u8) -> String { diff --git a/src/util/maps.rs b/src/util/maps.rs index 19ef915..e7e36a2 100644 --- a/src/util/maps.rs +++ b/src/util/maps.rs @@ -154,9 +154,20 @@ where } pub fn map U>(&self, f: F) -> World { - let v = self.map.iter().map(|row| row.iter().map(|e| f(e)).collect()).collect(); + let v = self + .map + .iter() + .map(|row| row.iter().map(|e| f(e)).collect()) + .collect(); World::::from_2d_vec(v) } + + pub fn adjacent_locations(&self, x: usize, y: usize) -> Vec<(usize, usize)> { + Direction::all_variants() + .into_iter() + .filter_map(|d| self.travel(x, y, d)) + .collect() + } } impl Display for World