From c0c631ce08d09150b4cfbddc2217a6f87a9c2b2d Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Wed, 1 May 2024 22:10:27 +0200 Subject: day 8, part 2, advent of code 2022 --- 2022/src/day08.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/2022/src/day08.cpp b/2022/src/day08.cpp index f46fdc6..b6cc3bf 100644 --- a/2022/src/day08.cpp +++ b/2022/src/day08.cpp @@ -60,9 +60,44 @@ part1(const vector& data) cout << positions.size() << endl; } +void +part2(const vector& data) +{ + auto check = [&](size_t row, size_t col) -> size_t { + size_t mul = 1; + const tuple directions[] = { { -1, 0 }, { 1, 0 }, { 0, -1 }, { 0, 1 } }; + for ( const auto& [dr, dc]: directions ) { + size_t step = 1; + for ( ;; ++step ) { + const auto nrow = row + step * dr; + const auto ncol = col + step * dc; + + if (nrow >= data.size() || ncol >= data[row].size()) { + --step; + break; + } + if (data[nrow][ncol] >= data[row][col]) { + break; + } + } + mul *= step; + } + return mul; + }; + + size_t max_so_far = 0; + for ( size_t row = 0; row != data.size(); ++row ) { + for ( size_t col = 0; col != data[row].size(); ++col ) { + max_so_far = max(max_so_far, check(row, col)); + } + } + cout << max_so_far << endl; +} + int main() { const auto grid = read_file("data/day08.txt"); part1(grid); + part2(grid); } -- cgit v1.3