diff --git a/CMakeLists.txt b/CMakeLists.txt index e2cf81d..eb4054d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,4 +5,6 @@ set(CMAKE_CXX_STANDARD 20) add_executable(AOC_24 main.cpp days/day01.cpp - days/day01.h) + days/day01.h + days/day02.cpp + days/day02.h) diff --git a/days/day02.cpp b/days/day02.cpp new file mode 100644 index 0000000..99e32a8 --- /dev/null +++ b/days/day02.cpp @@ -0,0 +1,57 @@ +// +// Created by stedd on 02.12.24. +// + +#include "day02.h" + +/* +--- Day 2: Red-Nosed Reports --- + +Fortunately, the first location The Historians want to search isn't a long walk from the Chief Historian's office. + +While the Red-Nosed Reindeer nuclear fusion/fission plant appears to contain no sign of the Chief Historian, the +engineers there run up to you as soon as they see you. Apparently, they still talk about the time Rudolph was saved +through molecular synthesis from a single electron. + +They're quick to add that - since you're already here - they'd really appreciate your help analyzing some unusual data +from the Red-Nosed reactor. You turn to check if The Historians are waiting for you, but they seem to have already +divided into groups that are currently searching every corner of the facility. You offer to help with the unusual data. + +The unusual data (your puzzle input) consists of many reports, one report per line. Each report is a list of numbers +called levels that are separated by spaces. For example: + +7 6 4 2 1 +1 2 7 8 9 +9 7 6 2 1 +1 3 2 4 5 +8 6 4 4 1 +1 3 6 7 9 + +This example data contains six reports each containing five levels. + +The engineers are trying to figure out which reports are safe. The Red-Nosed reactor safety systems can only +tolerate levels that are either gradually increasing or gradually decreasing. So, a report only counts as safe if +both of the following are true: + + The levels are either all increasing or all decreasing. + Any two adjacent levels differ by at least one and at most three. + +In the example above, the reports can be found safe or unsafe by checking those rules: + + 7 6 4 2 1: Safe because the levels are all decreasing by 1 or 2. + 1 2 7 8 9: Unsafe because 2 7 is an increase of 5. + 9 7 6 2 1: Unsafe because 6 2 is a decrease of 4. + 1 3 2 4 5: Unsafe because 1 3 is increasing but 3 2 is decreasing. + 8 6 4 4 1: Unsafe because 4 4 is neither an increase or a decrease. + 1 3 6 7 9: Safe because the levels are all increasing by 1, 2, or 3. + +So, in this example, 2 reports are safe. + +Analyze the unusual data from the engineers. How many reports are safe? + + */ + +void day02::Calculate() +{ + +} \ No newline at end of file diff --git a/days/day02.h b/days/day02.h new file mode 100644 index 0000000..204a635 --- /dev/null +++ b/days/day02.h @@ -0,0 +1,15 @@ +// +// Created by stedd on 02.12.24. +// + +#ifndef DAY02_H +#define DAY02_H + + +class day02 +{ +public: + static void Calculate(); +}; + +#endif //DAY02_H diff --git a/main.cpp b/main.cpp index de830ec..3befdc0 100644 --- a/main.cpp +++ b/main.cpp @@ -2,6 +2,7 @@ #include #include "days/day01.h" +#include "days/day02.h" int main() { @@ -12,7 +13,7 @@ int main() for (int i = 1; i <= cycles; i++) { const auto startTime = std::chrono::high_resolution_clock::now(); - day01::Calculate(); + day02::Calculate(); const auto endTime = std::chrono::high_resolution_clock::now(); const std::chrono::duration diff = endTime - startTime;