From e3d8709aeac42e5c2658e97fbf0fefaab0443e7c Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Sat, 9 Dec 2023 11:58:03 +0100 Subject: aoc(2309): Mirage Maintenance --- 2023/09/src/part1.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 2023/09/src/part2.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 2023/09/src/part1.cpp create mode 100644 2023/09/src/part2.cpp (limited to '2023/09/src') diff --git a/2023/09/src/part1.cpp b/2023/09/src/part1.cpp new file mode 100644 index 0000000..4087486 --- /dev/null +++ b/2023/09/src/part1.cpp @@ -0,0 +1,43 @@ +#include +#include +#include +#include + +void solve(std::vector v, int& answer) +{ + for (int a = v.size() - 1; a > 0; --a) + { + answer += v[a]; + for (int b = 0; b < a; ++b) + { + v[b] = v[b+1] - v[b]; + } + } +} + +int main(int argc, char* argv[]) +{ + int answer{}; + + std::ifstream input{ argv[1] }; + if (input.is_open()) + { + std::string line; + while (not std::getline(input,line).eof()) + { + int n; + std::vector v{}; + std::istringstream sline{ line }; + while(sline >> n) + { + v.push_back(n); + } + + solve(std::move(v), answer); + } + } + input.close(); + + std::cout << answer << std::endl; + return 0; +} diff --git a/2023/09/src/part2.cpp b/2023/09/src/part2.cpp new file mode 100644 index 0000000..df1ec5a --- /dev/null +++ b/2023/09/src/part2.cpp @@ -0,0 +1,45 @@ +#include +#include +#include +#include +#include + +void solve(std::vector v, int& answer) +{ + for (int a = 0; a < v.size() - 1; ++a) + { + answer += v[a]; + for (int b = v.size() - 1; b > a; --b) + { + v[b] = v[b-1] - v[b]; + } + } +} + +int main(int argc, char* argv[]) +{ + int answer{}; + + std::ifstream input{ argv[1] }; + if (input.is_open()) + { + std::string line; + while (not std::getline(input,line).eof()) + { + int n; + std::vector v{}; + std::istringstream sline{ line }; + while(sline >> n) + { + v.push_back(n); + } + + solve(std::move(v), answer); + } + } + input.close(); + + std::cout << answer << std::endl; + return 0; +} + -- cgit v1.2.3