From a99f11a3eef3b4b06c138cafe47d5c89950784e8 Mon Sep 17 00:00:00 2001 From: Benjamin Kraft Date: Thu, 21 Dec 2023 10:03:08 +0100 Subject: [PATCH] cleanup --- src/days/11/Day11.cpp | 65 +++++++++++++++++++------------------------ src/days/11/Day11.h | 2 ++ 2 files changed, 30 insertions(+), 37 deletions(-) diff --git a/src/days/11/Day11.cpp b/src/days/11/Day11.cpp index 515e743..248d8b6 100644 --- a/src/days/11/Day11.cpp +++ b/src/days/11/Day11.cpp @@ -29,38 +29,15 @@ Result Day11::Task1() { } } - vector galaxies; - for (size_t y = 0; y < universe.size(); y++){ - auto row = universe[y]; - for (size_t x = 0; x < row.size(); x++) - if (universe[y][x]) - galaxies.emplace_back(x, y); - } - - uint64 sum = 0; - - for (size_t i = 0; i < galaxies.size(); i++){ - for (size_t j = i + 1; j < galaxies.size(); j++){ - auto &[x1, y1] = galaxies[i]; - auto &[x2, y2] = galaxies[j]; + auto galaxies = getGalaxies(universe); - sum += std::abs(long(x2 - x1)) + std::abs(long(y2 - y1)); - } - } - - return to_string(sum); + return to_string(getDistanceSum(galaxies)); } Result Day11::Task2() { Universe universe = parseUniverse(); - vector galaxies; - for (size_t y = 0; y < universe.size(); y++){ - auto row = universe[y]; - for (size_t x = 0; x < row.size(); x++) - if (universe[y][x]) - galaxies.emplace_back(x, y); - } + auto galaxies = getGalaxies(universe); const size_t gapSize = 1000000; @@ -94,6 +71,23 @@ Result Day11::Task2() { gx += gapSize - 1; } + return to_string(getDistanceSum(galaxies)); +} + +Day11::Universe Day11::parseUniverse() const { + Universe universe; + + for (const string &line : input){ + vector row(line.size(), false); + for (size_t index : findAll(line, "#")) + row[index] = true; + universe.push_back(row); + } + + return universe; +} + +uint64 Day11::getDistanceSum(const vector &galaxies) { uint64 sum = 0; for (size_t i = 0; i < galaxies.size(); i++){ @@ -105,18 +99,15 @@ Result Day11::Task2() { } } - return to_string(sum); + return sum; } -Day11::Universe Day11::parseUniverse() const { - Universe universe; - - for (const string &line : input){ - vector row(line.size(), false); - for (size_t index : findAll(line, "#")) - row[index] = true; - universe.push_back(row); +vector Day11::getGalaxies(const Day11::Universe &universe) { + vector galaxies; + for (size_t y = 0; y < universe.size(); y++){ + for (size_t x = 0; x < universe[y].size(); x++) + if (universe[y][x]) + galaxies.emplace_back(x, y); } - - return universe; + return galaxies; } diff --git a/src/days/11/Day11.h b/src/days/11/Day11.h index c37e70a..6923891 100644 --- a/src/days/11/Day11.h +++ b/src/days/11/Day11.h @@ -6,6 +6,8 @@ class Day11 : public Day { typedef pair Coord; typedef vector> Universe; Universe parseUniverse() const; + static vector getGalaxies(const Universe &universe) ; + static uint64 getDistanceSum(const vector &galaxies) ; protected: Result Task1() override;