main
Benjamin Kraft 9 months ago
parent 42cd4680d9
commit a99f11a3ee
  1. 65
      src/days/11/Day11.cpp
  2. 2
      src/days/11/Day11.h

@ -29,38 +29,15 @@ Result Day11::Task1() {
}
}
vector<Coord> 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<Coord> 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<bool> row(line.size(), false);
for (size_t index : findAll(line, "#"))
row[index] = true;
universe.push_back(row);
}
return universe;
}
uint64 Day11::getDistanceSum(const vector<Coord> &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<bool> row(line.size(), false);
for (size_t index : findAll(line, "#"))
row[index] = true;
universe.push_back(row);
vector<Day11::Coord> Day11::getGalaxies(const Day11::Universe &universe) {
vector<Coord> 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;
}

@ -6,6 +6,8 @@ class Day11 : public Day {
typedef pair<size_t, size_t> Coord;
typedef vector<vector<bool>> Universe;
Universe parseUniverse() const;
static vector<Coord> getGalaxies(const Universe &universe) ;
static uint64 getDistanceSum(const vector<Coord> &galaxies) ;
protected:
Result Task1() override;

Loading…
Cancel
Save