From 10a32edef7343ab00fd1555850823e38cfb87def Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Wed, 1 May 2024 18:31:47 +0200 Subject: day 8, part 1, advent of code 2022 --- 2022/src/day08.cpp | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 2022/src/day08.cpp diff --git a/2022/src/day08.cpp b/2022/src/day08.cpp new file mode 100644 index 0000000..f46fdc6 --- /dev/null +++ b/2022/src/day08.cpp @@ -0,0 +1,68 @@ +#include +#include +#include +#include +#include +#include +using namespace std; + +vector +read_file(string_view filename) +{ + fstream input{ filename }; + vector data; + + for ( string line; getline(input, line); ) { + data.emplace_back(line); + } + + return data; +} + +void +part1(const vector& data) +{ + set> positions; + + char max_so_far = 0; + + auto update = [&](size_t row, size_t col) { + if ( data[row][col] > max_so_far ) { + positions.emplace(row, col); + max_so_far = data[row][col]; + } + }; + + for ( size_t row = 0; row != data.size(); ++row ) { + max_so_far = 0; + for ( size_t col = 0; col != data[row].size(); ++col ) { + update(row, col); + } + + max_so_far = 0; + for ( size_t col = data[row].size(); col-- > 0; ) { + update(row, col); + } + } + + for ( size_t col = 0; col != data[0].size(); ++col ) { + max_so_far = 0; + for ( size_t row = 0; row != data.size(); ++row ) { + update(row, col); + } + + max_so_far = 0; + for ( size_t row = data.size(); row-- > 0; ) { + update(row, col); + } + } + + cout << positions.size() << endl; +} + +int +main() +{ + const auto grid = read_file("data/day08.txt"); + part1(grid); +} -- cgit v1.3