From a6fb39f168d02e938ed9245e388757de7495f5a7 Mon Sep 17 00:00:00 2001 From: Stedd Date: Mon, 2 Dec 2024 23:53:45 +0100 Subject: [PATCH] spaghetti --- days/day02.cpp | 30 +++++++++++------------------- days/day02.h | 4 ++-- 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/days/day02.cpp b/days/day02.cpp index 09ab9f3..03d8879 100644 --- a/days/day02.cpp +++ b/days/day02.cpp @@ -74,7 +74,9 @@ void day02::Calculate() int safeReports = 0; for (std::string line; std::getline(input, line, '\n');) { - if (IsSafe(line)) + std::istringstream iss(line); + std::vector numbers(std::istream_iterator{iss}, std::istream_iterator()); + if (IsSafe(numbers, false)) { safeReports++; } @@ -82,10 +84,8 @@ void day02::Calculate() std::cout << safeReports << '\n'; } -bool day02::IsSafe(const std::string &line) +bool day02::IsSafe(const std::vector &numbers, const bool secondPass) { - std::istringstream iss(line); - std::vector numbers(std::istream_iterator{iss}, std::istream_iterator()); int previousNumber = numbers.at(numbers.size() - 1); bool increasing = false; bool decreasing = false; @@ -106,22 +106,14 @@ bool day02::IsSafe(const std::string &line) } } - if (SafetyChecks(currentNumber, previousNumber, increasing, decreasing) == 1) + if (SafetyChecks(currentNumber, previousNumber, increasing, decreasing) == 1 && !secondPass) { - // numbers.erase(numbers.begin() + i); - // if (i + 1 < numbers.size()) - // { - // previousNumber = numbers.at(i + 1); - // } else - // { - // printf("wtf do i do here?"); - // } - // //currentNumber = numbers.at(i); - // if (SafetyChecks(currentNumber, previousNumber, increasing, decreasing) == 1) - // { - safe = false; - return false; - // } + + if (IsSafe(numbers, true)) + { + safe = false; + return false; + } } previousNumber = currentNumber; diff --git a/days/day02.h b/days/day02.h index a44b34e..3e85db8 100644 --- a/days/day02.h +++ b/days/day02.h @@ -4,7 +4,7 @@ #ifndef DAY02_H #define DAY02_H -#include +#include class day02 @@ -12,7 +12,7 @@ class day02 public: static void Calculate(); - static bool IsSafe(const std::string &line); + static bool IsSafe(const std::vector& numbers,bool secondPass); static int SafetyChecks(int current, int previous, bool increasing, bool decreasing); };