diff options
| author | Thomas Schmucker <ts@its1.de> | 2024-05-01 22:10:27 +0200 |
|---|---|---|
| committer | Thomas Schmucker <ts@its1.de> | 2024-05-01 22:10:27 +0200 |
| commit | c0c631ce08d09150b4cfbddc2217a6f87a9c2b2d (patch) | |
| tree | 5df31764aa6fe40e612a55d9bdd7c55123874a58 /2022 | |
| parent | 10a32edef7343ab00fd1555850823e38cfb87def (diff) | |
| download | advent-of-code-c0c631ce08d09150b4cfbddc2217a6f87a9c2b2d.tar.gz advent-of-code-c0c631ce08d09150b4cfbddc2217a6f87a9c2b2d.tar.bz2 advent-of-code-c0c631ce08d09150b4cfbddc2217a6f87a9c2b2d.zip | |
day 8, part 2, advent of code 2022
Diffstat (limited to '2022')
| -rw-r--r-- | 2022/src/day08.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
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<string>& data) | |||
| 60 | cout << positions.size() << endl; | 60 | cout << positions.size() << endl; |
| 61 | } | 61 | } |
| 62 | 62 | ||
| 63 | void | ||
| 64 | part2(const vector<string>& data) | ||
| 65 | { | ||
| 66 | auto check = [&](size_t row, size_t col) -> size_t { | ||
| 67 | size_t mul = 1; | ||
| 68 | const tuple<size_t, size_t> directions[] = { { -1, 0 }, { 1, 0 }, { 0, -1 }, { 0, 1 } }; | ||
| 69 | for ( const auto& [dr, dc]: directions ) { | ||
| 70 | size_t step = 1; | ||
| 71 | for ( ;; ++step ) { | ||
| 72 | const auto nrow = row + step * dr; | ||
| 73 | const auto ncol = col + step * dc; | ||
| 74 | |||
| 75 | if (nrow >= data.size() || ncol >= data[row].size()) { | ||
| 76 | --step; | ||
| 77 | break; | ||
| 78 | } | ||
| 79 | if (data[nrow][ncol] >= data[row][col]) { | ||
| 80 | break; | ||
| 81 | } | ||
| 82 | } | ||
| 83 | mul *= step; | ||
| 84 | } | ||
| 85 | return mul; | ||
| 86 | }; | ||
| 87 | |||
| 88 | size_t max_so_far = 0; | ||
| 89 | for ( size_t row = 0; row != data.size(); ++row ) { | ||
| 90 | for ( size_t col = 0; col != data[row].size(); ++col ) { | ||
| 91 | max_so_far = max(max_so_far, check(row, col)); | ||
| 92 | } | ||
| 93 | } | ||
| 94 | cout << max_so_far << endl; | ||
| 95 | } | ||
| 96 | |||
| 63 | int | 97 | int |
| 64 | main() | 98 | main() |
| 65 | { | 99 | { |
| 66 | const auto grid = read_file("data/day08.txt"); | 100 | const auto grid = read_file("data/day08.txt"); |
| 67 | part1(grid); | 101 | part1(grid); |
| 102 | part2(grid); | ||
| 68 | } | 103 | } |
