From db9d8ff5938d584b07d42fb2ba61e3c9bf91d60a Mon Sep 17 00:00:00 2001 From: Benjo Date: Fri, 31 Dec 2021 13:48:11 +0100 Subject: [PATCH] better setup --- input/01_testInput.txt | 3 + input/02_input.txt | 1000 ---------------------------------------- src/01/Day01.cpp | 8 +- src/01/Day01.h | 6 +- src/02/Day02.cpp | 8 +- src/02/Day02.h | 6 +- src/03/Day03.cpp | 8 +- src/03/Day03.h | 6 +- src/Day.h | 33 +- src/main.cpp | 23 +- 10 files changed, 75 insertions(+), 1026 deletions(-) create mode 100644 input/01_testInput.txt delete mode 100644 input/02_input.txt diff --git a/input/01_testInput.txt b/input/01_testInput.txt new file mode 100644 index 0000000..b8cd4c8 --- /dev/null +++ b/input/01_testInput.txt @@ -0,0 +1,3 @@ +hallo +du +da \ No newline at end of file diff --git a/input/02_input.txt b/input/02_input.txt deleted file mode 100644 index 227deb8..0000000 --- a/input/02_input.txt +++ /dev/null @@ -1,1000 +0,0 @@ -forward 8 -down 9 -up 4 -down 8 -down 3 -down 3 -down 2 -forward 1 -forward 4 -down 5 -up 7 -forward 1 -down 1 -down 6 -down 9 -down 5 -forward 5 -forward 6 -forward 4 -down 2 -down 8 -forward 3 -down 5 -forward 6 -up 7 -up 2 -forward 2 -forward 4 -forward 1 -up 8 -up 9 -down 8 -up 8 -up 6 -up 2 -down 7 -up 3 -forward 8 -forward 5 -down 8 -down 8 -forward 5 -down 3 -down 4 -down 5 -down 2 -up 7 -down 1 -forward 9 -forward 9 -up 6 -down 5 -up 1 -down 8 -up 1 -forward 2 -down 4 -down 5 -down 2 -up 7 -forward 9 -up 8 -down 3 -up 6 -down 2 -up 2 -forward 3 -up 1 -up 1 -forward 9 -down 3 -down 5 -up 7 -down 1 -up 5 -up 5 -up 7 -down 9 -down 3 -up 3 -forward 9 -forward 7 -up 9 -down 3 -down 2 -up 8 -forward 5 -forward 9 -down 5 -down 2 -down 9 -down 6 -down 6 -up 3 -forward 3 -up 6 -forward 9 -down 3 -down 2 -forward 6 -down 7 -down 2 -down 8 -forward 2 -forward 8 -forward 4 -forward 1 -up 6 -forward 2 -forward 8 -forward 5 -forward 4 -up 1 -down 8 -up 3 -forward 8 -forward 4 -up 6 -down 2 -forward 6 -forward 9 -down 2 -up 3 -forward 8 -down 6 -up 4 -down 7 -up 3 -forward 4 -down 8 -forward 5 -forward 1 -down 3 -forward 1 -forward 8 -down 3 -forward 4 -forward 2 -up 7 -forward 6 -forward 8 -forward 6 -down 5 -down 2 -down 8 -down 2 -down 9 -down 5 -down 3 -down 8 -up 1 -forward 1 -up 5 -up 1 -up 6 -up 3 -up 2 -forward 5 -forward 6 -down 4 -up 3 -up 9 -down 1 -forward 1 -forward 6 -down 9 -forward 5 -forward 3 -forward 2 -down 7 -down 5 -down 8 -forward 9 -forward 4 -down 2 -up 9 -down 1 -forward 5 -forward 1 -forward 9 -down 8 -forward 5 -down 8 -forward 3 -up 4 -down 7 -down 9 -forward 3 -forward 7 -down 9 -up 5 -up 7 -forward 8 -down 3 -down 9 -down 1 -forward 3 -down 1 -up 9 -forward 6 -down 9 -forward 1 -forward 5 -down 6 -up 7 -forward 9 -down 9 -forward 6 -down 3 -up 6 -up 2 -up 1 -up 9 -down 9 -forward 4 -forward 6 -up 7 -forward 2 -down 5 -forward 7 -down 5 -forward 4 -down 8 -up 3 -down 1 -forward 5 -down 5 -up 6 -down 6 -forward 4 -down 8 -down 6 -down 7 -down 9 -down 4 -forward 5 -down 8 -down 7 -forward 3 -forward 5 -up 8 -down 4 -down 1 -up 6 -up 9 -down 2 -down 2 -up 1 -up 7 -forward 1 -down 1 -down 4 -down 8 -forward 1 -forward 3 -down 8 -up 9 -forward 1 -down 6 -forward 3 -down 9 -down 2 -up 8 -forward 5 -up 1 -forward 9 -down 4 -forward 3 -up 6 -up 4 -down 9 -down 8 -down 3 -forward 6 -forward 6 -down 1 -down 2 -down 2 -down 2 -up 7 -down 2 -forward 9 -down 3 -up 5 -forward 9 -up 5 -forward 1 -down 1 -forward 7 -down 8 -down 9 -down 1 -forward 8 -up 1 -forward 8 -down 1 -forward 9 -down 8 -down 2 -forward 4 -up 2 -down 7 -forward 6 -forward 6 -forward 4 -up 8 -up 2 -down 8 -up 7 -forward 2 -forward 6 -forward 3 -up 5 -forward 9 -down 9 -forward 6 -up 2 -down 6 -forward 4 -forward 5 -down 3 -up 2 -forward 3 -forward 2 -up 7 -down 1 -up 1 -up 8 -down 4 -forward 7 -forward 2 -up 2 -down 4 -forward 4 -forward 2 -forward 2 -down 8 -down 2 -down 2 -forward 6 -up 2 -up 9 -down 1 -down 7 -forward 9 -forward 4 -up 8 -forward 2 -forward 5 -down 3 -down 6 -down 4 -forward 7 -up 1 -forward 7 -down 8 -up 2 -down 8 -forward 6 -down 3 -up 9 -up 6 -up 6 -forward 5 -forward 1 -forward 3 -forward 3 -down 7 -down 3 -forward 8 -forward 2 -down 7 -down 1 -up 4 -forward 2 -forward 1 -up 6 -forward 9 -up 4 -forward 5 -up 4 -forward 3 -down 1 -forward 6 -forward 2 -down 3 -down 7 -forward 7 -down 4 -forward 6 -down 8 -forward 5 -up 9 -up 9 -forward 4 -forward 8 -down 6 -down 7 -forward 1 -up 4 -forward 9 -forward 7 -forward 2 -forward 6 -up 4 -forward 4 -down 3 -down 2 -up 4 -forward 4 -forward 3 -up 8 -forward 8 -down 9 -forward 4 -forward 6 -forward 7 -down 5 -forward 6 -down 3 -up 2 -down 4 -forward 1 -up 3 -forward 4 -down 7 -down 9 -down 6 -up 7 -down 2 -down 5 -forward 7 -up 6 -down 2 -forward 4 -down 9 -up 8 -forward 6 -down 4 -down 3 -up 9 -down 6 -down 9 -up 3 -down 2 -forward 3 -down 1 -forward 1 -forward 5 -down 7 -forward 2 -down 8 -down 8 -down 7 -forward 5 -forward 9 -forward 9 -forward 2 -up 5 -down 2 -forward 3 -down 2 -forward 9 -up 1 -forward 1 -up 6 -down 1 -forward 4 -down 5 -forward 2 -up 7 -up 4 -up 3 -forward 6 -down 5 -forward 6 -down 6 -forward 6 -down 2 -down 8 -up 9 -forward 2 -down 4 -forward 4 -forward 9 -up 9 -down 4 -up 7 -down 6 -up 2 -up 7 -down 5 -down 6 -down 8 -down 1 -forward 6 -forward 6 -forward 7 -down 3 -forward 3 -forward 8 -forward 1 -forward 2 -down 8 -forward 6 -down 6 -forward 8 -forward 3 -forward 6 -down 4 -down 2 -forward 4 -forward 6 -forward 8 -down 3 -down 3 -down 4 -up 1 -forward 3 -down 2 -down 3 -down 9 -down 3 -down 8 -down 1 -down 6 -forward 5 -down 5 -down 7 -up 3 -forward 5 -down 7 -down 7 -forward 6 -down 6 -up 6 -forward 2 -up 9 -down 3 -forward 3 -forward 4 -up 6 -down 7 -forward 1 -up 8 -forward 3 -down 1 -forward 6 -forward 7 -down 5 -down 6 -down 8 -up 6 -down 4 -down 5 -down 1 -up 1 -up 9 -up 4 -forward 2 -down 5 -down 7 -forward 5 -forward 2 -up 1 -down 7 -up 6 -forward 5 -down 5 -down 9 -up 4 -down 6 -forward 8 -down 5 -forward 6 -forward 1 -forward 5 -forward 4 -down 2 -down 7 -up 7 -down 9 -down 7 -up 4 -down 3 -up 9 -forward 3 -up 1 -up 7 -forward 4 -forward 6 -up 2 -forward 2 -forward 4 -down 6 -forward 4 -forward 6 -forward 9 -forward 4 -forward 8 -up 9 -up 4 -forward 1 -forward 3 -down 5 -down 4 -up 6 -up 2 -forward 9 -up 9 -up 2 -forward 6 -down 5 -up 7 -forward 3 -forward 4 -down 5 -up 8 -forward 7 -forward 3 -up 5 -down 7 -down 6 -forward 9 -up 2 -forward 5 -down 2 -down 9 -forward 1 -down 4 -forward 3 -up 9 -down 2 -up 5 -down 8 -forward 1 -up 9 -up 7 -up 1 -forward 7 -forward 1 -forward 7 -down 2 -up 6 -forward 6 -down 1 -forward 1 -down 7 -down 9 -forward 9 -up 3 -forward 3 -down 1 -forward 1 -forward 9 -down 7 -forward 2 -down 7 -forward 2 -forward 4 -down 5 -down 5 -forward 5 -down 9 -down 4 -forward 3 -down 4 -down 3 -down 3 -down 2 -forward 1 -up 8 -forward 1 -forward 5 -forward 1 -forward 2 -forward 4 -forward 6 -forward 8 -forward 7 -down 5 -up 6 -forward 8 -down 9 -up 3 -up 2 -down 4 -up 1 -forward 6 -up 6 -forward 9 -forward 3 -down 3 -down 5 -forward 6 -down 6 -down 4 -up 6 -forward 4 -up 8 -down 4 -down 8 -down 3 -down 1 -down 6 -down 7 -down 8 -down 2 -down 5 -forward 4 -forward 6 -forward 7 -down 1 -down 5 -forward 9 -down 6 -forward 6 -forward 7 -forward 4 -forward 2 -forward 2 -up 6 -forward 9 -up 6 -down 1 -forward 4 -down 2 -up 3 -forward 5 -up 1 -forward 4 -forward 4 -up 4 -down 7 -down 5 -up 4 -forward 5 -up 8 -up 4 -up 2 -up 8 -forward 6 -down 9 -down 8 -down 4 -down 4 -up 9 -forward 4 -forward 5 -forward 4 -forward 9 -down 7 -down 4 -down 3 -down 7 -forward 3 -forward 1 -down 1 -forward 5 -forward 6 -down 1 -forward 3 -down 7 -up 4 -forward 4 -forward 7 -up 1 -up 9 -down 7 -down 5 -up 8 -forward 3 -forward 5 -forward 3 -down 6 -down 1 -down 9 -up 9 -forward 5 -down 1 -down 1 -down 8 -forward 8 -up 2 -down 1 -down 2 -down 6 -down 3 -forward 7 -forward 1 -down 4 -up 9 -down 7 -down 6 -down 9 -forward 5 -forward 4 -forward 9 -up 7 -forward 5 -down 6 -forward 9 -forward 2 -forward 8 -up 9 -forward 2 -down 8 -up 8 -down 8 -down 8 -forward 2 -down 1 -forward 5 -down 4 -up 2 -forward 8 -up 4 -up 8 -forward 4 -forward 6 -forward 6 -forward 3 -forward 5 -forward 4 -down 6 -up 6 -forward 7 -up 3 -down 1 -down 1 -down 9 -forward 6 -down 9 -forward 2 -down 7 -down 2 -down 5 -forward 3 -down 4 -down 8 -down 3 -forward 6 -up 9 -forward 1 -forward 4 -forward 8 -up 9 -down 5 -up 5 -up 9 -forward 6 -up 2 -forward 7 -up 5 -forward 8 -forward 6 -down 2 -down 7 -up 8 -up 3 -forward 4 -forward 1 -down 8 -down 4 -forward 6 -forward 6 -up 6 -up 3 -up 7 -forward 6 -up 2 -down 8 -forward 1 -forward 3 -down 3 -forward 8 -forward 5 -forward 3 -forward 9 -down 6 -forward 9 -up 7 -down 3 -down 8 -forward 4 -down 9 -up 8 -up 1 -forward 2 -down 2 -forward 1 -down 8 -forward 7 -up 4 -down 1 -forward 8 -down 2 -forward 3 -forward 9 -down 7 -up 4 -up 2 -forward 1 -down 2 -up 8 -forward 4 -down 1 -forward 5 -forward 1 -down 5 -forward 1 -up 2 -forward 6 -down 5 -down 8 -down 3 -down 2 -forward 1 -forward 5 -down 8 -down 1 -forward 5 -down 7 -down 4 -forward 5 -down 1 -down 1 -forward 9 -down 7 -up 9 -down 6 -forward 4 -up 8 -forward 6 -forward 1 -up 6 -forward 3 -down 3 -up 6 -forward 2 -down 2 -forward 3 -down 2 -up 4 -down 6 -forward 4 -down 6 -down 4 -up 2 -down 2 -up 5 -up 2 -down 9 -down 5 -forward 1 -down 6 -forward 4 -forward 9 -down 1 -down 9 -forward 3 -forward 8 -forward 9 -down 4 -down 1 -up 1 -up 7 -down 5 -down 3 -down 2 -down 8 -forward 5 -up 1 -down 4 -down 8 -down 8 -forward 1 -down 5 -forward 7 -forward 9 -forward 5 -forward 2 -down 9 -up 1 -down 6 -down 5 -forward 4 -forward 3 -down 4 -down 3 -down 8 -forward 6 -down 2 -forward 7 -down 7 -forward 8 -forward 1 -forward 7 -forward 8 -forward 6 diff --git a/src/01/Day01.cpp b/src/01/Day01.cpp index 05e811e..2396367 100644 --- a/src/01/Day01.cpp +++ b/src/01/Day01.cpp @@ -1,6 +1,10 @@ #include "Day01.h" -int Day01::run() { - return 0; +Result Day01::Task1() { + return Day::Task1(); +} + +Result Day01::Task2() { + return Day::Task2(); } diff --git a/src/01/Day01.h b/src/01/Day01.h index f2a5610..351f212 100644 --- a/src/01/Day01.h +++ b/src/01/Day01.h @@ -5,9 +5,11 @@ #include "../Day.h" class Day01 : public Day { +protected: + Result Task1() override; + Result Task2() override; public: - explicit Day01(std::vector &input) : Day(input) {} - int run() override; + explicit Day01(Input &input) : Day(input) {} }; diff --git a/src/02/Day02.cpp b/src/02/Day02.cpp index 88d736d..0ffdc82 100644 --- a/src/02/Day02.cpp +++ b/src/02/Day02.cpp @@ -1,6 +1,10 @@ #include "Day02.h" -int Day02::run() { - return 0; +Result Day02::Task1() { + return Day::Task1(); } + +Result Day02::Task2() { + return Day::Task2(); +} \ No newline at end of file diff --git a/src/02/Day02.h b/src/02/Day02.h index 2f9d11d..92ebcd5 100644 --- a/src/02/Day02.h +++ b/src/02/Day02.h @@ -5,9 +5,11 @@ #include "../Day.h" class Day02 : public Day { +protected: + Result Task1() override; + Result Task2() override; public: - explicit Day02(std::vector &input) : Day(input) {} - int run() override; + explicit Day02(Input &input) : Day(input) {} }; diff --git a/src/03/Day03.cpp b/src/03/Day03.cpp index 7734c40..498810d 100644 --- a/src/03/Day03.cpp +++ b/src/03/Day03.cpp @@ -1,6 +1,10 @@ #include "Day03.h" -int Day03::run() { - return 0; +Result Day03::Task1() { + return Day::Task1(); } + +Result Day03::Task2() { + return Day::Task2(); +} \ No newline at end of file diff --git a/src/03/Day03.h b/src/03/Day03.h index 0187de2..79cf08a 100644 --- a/src/03/Day03.h +++ b/src/03/Day03.h @@ -5,9 +5,11 @@ #include "../Day.h" class Day03 : public Day { +protected: + Result Task1() override; + Result Task2() override; public: - explicit Day03(std::vector &input) : Day(input) {} - int run() override; + explicit Day03(Input &input) : Day(input) {} }; diff --git a/src/Day.h b/src/Day.h index 7cfe824..3bcd487 100644 --- a/src/Day.h +++ b/src/Day.h @@ -3,15 +3,38 @@ #include #include +#include +#include +#include -class Day { +using namespace std::chrono; +typedef std::string Result; +typedef std::vector Input; +class Day { protected: - std::vector input; - + Input input; + virtual Result Task1() { return ""; } + virtual Result Task2() { return ""; } public: - explicit Day(std::vector &input) : input(input) {} - virtual int run() { + explicit Day(Input &input) : input(input) {} + int run() { + auto start = high_resolution_clock::now(); + + std::cout << "Task 1" << std::endl; + Result result1 = Task1(); + auto stop1 = high_resolution_clock::now(); + auto dur1 = duration_cast(stop1 - start); + std::cout << "Result: " << result1 << std::endl; + std::cout << "Duration: " << dur1.count() << "ms" << std::endl; + + std::cout << "Task 2" << std::endl; + Result result2 = Task2(); + auto stop2 = high_resolution_clock::now(); + auto dur2 = duration_cast(stop2 - stop1); + std::cout << "Result: " << result2 << std::endl; + std::cout << "Duration: " << dur2.count() << "ms" << std::endl << std::endl; + return 0; } }; diff --git a/src/main.cpp b/src/main.cpp index 54b5946..8efcdaf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,16 +1,16 @@ -#include -#include -#include #include #include "days.h" #include -std::vector getInput(int day, std::string key){ +using namespace std::chrono; + +std::vector getInput(int day, std::string key, bool useTestInput){ std::vector result; char dayStrPadded[3]; sprintf(dayStrPadded, "%02u", day); - std::string localFilePath = "input/" + std::string(dayStrPadded) + "_input.txt"; + std::string postfix = useTestInput ? "_testInput.txt" : "_input.txt"; + std::string localFilePath = "input/" + std::string(dayStrPadded) + postfix; if (!std::filesystem::exists({localFilePath})){ if (key.empty()) @@ -18,10 +18,8 @@ std::vector getInput(int day, std::string key){ std::string dayStr = std::to_string(day); std::string url = "https://adventofcode.com/2021/day/" + dayStr + "/input"; std::cout << "Input does not exist. Fetching from " + url << std::endl; - cpr::Response res = cpr::Get(cpr::Url {url}, cpr::Cookies{{"session", key}}); - std::string content = res.text; std::ofstream file(localFilePath); - file << content; + file << cpr::Get(cpr::Url {url}, cpr::Cookies{{"session", key}}).text; file.close(); } @@ -49,11 +47,18 @@ std::string getSessionKey(){ int main(int argc, char *argv[]) { std::string key = getSessionKey(); + bool useTestInput = false; for (int i = 1; i < argc; i++){ int dayNum = std::stoi(argv[i]); - std::vector input = getInput(dayNum, key); + std::cout << "Running day " << dayNum << std::endl; + auto input = getInput(dayNum, key, useTestInput); auto day = getDay(dayNum, input); + if (day == nullptr){ + std::cout << "Could not run day " << dayNum << std::endl; + continue; + } + int code = day->run(); if (code != 0) return code;