Add solution for "Day 8: Resonant Collinearity", part 2

The Point2::operator<() was introduced for set<Point2>, which is not actually required.
This commit is contained in:
2025-02-04 17:43:20 +01:00
parent 44f2a0e0ec
commit e1cd0867cb
6 changed files with 55 additions and 22 deletions

View File

@@ -34,7 +34,6 @@ class Point2
Point2(const int x, const int y);
bool operator==(const Point2& rhs) const;
bool operator!=(const Point2& rhs) const;
bool operator<(const Point2& rhs) const;
Point2 operator+(const Point2& rhs) const;
Point2 operator-(const Point2& rhs) const;
Point2 operator*(const int rhs) const;

View File

@@ -16,9 +16,9 @@
#pragma once
#include <map>
#include <set>
#include <vector>
#include <aoc/Grid.hpp>
#include <aoc/LinesSolver.hpp>
#include <aoc/Point2.hpp>
@@ -32,7 +32,8 @@ class ResonantCollinearity
private:
static constexpr char getEmptyChar();
std::map<char, std::vector<Point2>> antennas_{};
std::set<Point2> antinodes_{};
void addNewAntenna(Point2&& newPosition);
void addNewAntinode(Point2&& newPosition);
void addNewAntenna(Grid<bool>& antinodeGrid1, Grid<bool>& antinodeGrid2, Point2&& newPosition);
void findNewAntinodes(Grid<bool>& antinodeGrid1, Grid<bool>& antinodeGrid2, Point2&& start,
const Point2& increment);
void addNewAntinode(Grid<bool>& antinodeGrid, Point2& newPosition, long long int& part);
};