From a342582f69295f2d1cd31e3c6182bd37f6067459 Mon Sep 17 00:00:00 2001 From: Stedd Date: Mon, 2 Dec 2024 23:08:08 +0100 Subject: [PATCH] not working. this was harder than expected --- days/day02.cpp | 68 +++++++++++++++++++++++++++++--------------------- days/day02.h | 2 +- 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/days/day02.cpp b/days/day02.cpp index f7385f5..14b8561 100644 --- a/days/day02.cpp +++ b/days/day02.cpp @@ -98,30 +98,35 @@ void day02::Calculate() { decreasing = true; } - } else - { - if (IsUnsafe(currentNumber, previousNumber, increasing, decreasing)) - { - numbers.erase(numbers.begin() + i - 1); - i--; - previousNumber = numbers.at(i - 1); - currentNumber = numbers.at(i); + } - if (currentNumber > previousNumber) - { - increasing = true; - } - if (currentNumber < previousNumber) - { - decreasing = true; - } - if (IsUnsafe(currentNumber, previousNumber, increasing, decreasing)) - { - // continue; - safe = false; - break; - } - }; + + if (IsUnsafe(currentNumber, previousNumber, increasing, decreasing) == 1) + { + numbers.erase(numbers.begin() + i); + if (i >= numbers.size()) + { + i--; + } + + previousNumber = numbers.at(i - 1); + currentNumber = numbers.at(i); + + + // if (currentNumber > previousNumber) + // { + // increasing = true; + // } + // if (currentNumber < previousNumber) + // { + // decreasing = true; + // } + if (IsUnsafe(currentNumber, previousNumber, increasing, decreasing) == 1) + { + // continue; + safe = false; + break; + } } @@ -135,24 +140,29 @@ void day02::Calculate() std::cout << safeReports << '\n'; } -bool day02::IsUnsafe(const int current, const int previous, const bool increasing, const bool decreasing) +int day02::IsUnsafe(const int current, const int previous, const bool increasing, const bool decreasing) { const int diff = abs(current - previous); if (current < previous && increasing) { - return true; + //remove current + return 1; } if (current > previous && decreasing) { - return true; + //remove current + return 1; } if (current == previous) { - return true; + //remove current + return 1; } if (diff < 1 || diff > 3) { - return true; + //remove current + return 1; } - return false; + //safe + return 0; } diff --git a/days/day02.h b/days/day02.h index 4de090a..1619e74 100644 --- a/days/day02.h +++ b/days/day02.h @@ -11,7 +11,7 @@ class day02 public: static void Calculate(); - static bool IsUnsafe(int current, int previous, bool increasing, bool decreasing); + static int IsUnsafe(int current, int previous, bool increasing, bool decreasing); }; #endif //DAY02_H