Skip to content

Commit

Permalink
Day 11.
Browse files Browse the repository at this point in the history
Blaz Kranjc committed Dec 11, 2020
1 parent 9c0433c commit 3481a48
Showing 5 changed files with 253 additions and 2 deletions.
93 changes: 93 additions & 0 deletions resources/day11.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLL..LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LL.LLLLLLL
LLLL.LLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLL
LL.LLLLLLLLLLLLLLLLLLLL..LLLLLL..LLLLLLL.LLLLLLL.LLLLLL.LLLL.LLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLL
LLLL.LLLLL.LLL.LLLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLLLL.LL
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLL.LLLLLLLL..LLLLLL.LLLLLL.LLLL.LLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLL
LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLL..LLLLLLLLL
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLL.LLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL..LLLLLLLLLL.LLLL
LLLLLLLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLL..LLLL.LLLLLLLLLLLLLLL.LLL.LLLLLLLLLLLLL
LLLLLLLLLL.LL.L.LLLLLLL.LLLLLL..LLLLLLLL.LLLLLLL.L.LLLL.LLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL
LLLL.LLLLL.LLLL.L.LLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLL.LLL.LLLL..LLLLLLLLL
L..LL.L.LL.........LLL...LLL.........LL..LL.L..LL..L...L..L....LL.LL.L.LL.L..L...LLL......LL.L
LL.LLLLLLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLLLLL.LLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLL
LLLLLLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLL
LLLLLLLLLL.LLLLLLLLLLLLLL.LLLL.LLLLLLL.L.LLLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLL
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLL.LLLLLL.LLLL.LLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLL
LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLL
LLLLLLLLLL.LLLL.L.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLL.LL.LLLLLLLLLLLL.L.LLLLLLL.LLLL.LLLLLLLLLL
LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLL.LL.LLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLL
LLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLL
...L..L.LL......L..L..LL..LLL..L.L.L....L.LLLLL...L...L....L..L..........L..LL.LL.L........LL.
LLLLLLLLLLLLLLL.LLLLL.L.LLLLLLL.LLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLL
LLLLLLLLLL.LLLL.LLLLLLLLLLLLLLL.LLL.LLLL.LLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLL
LLLLLLLLLL.LLLL..LLLLLL.LLLLLLL.LLLLLLLL.LLLLLLL.LLLLLL.LLLL.LLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLL
.LLLLLLLLL.LLLL..LLLLLL.LLLLLL..LLLLL.LL.LLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLL
LLLLL.LLLL.LLLLLLLLLLL..LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LL.L.LLLLLLL..LLLLLLLL.LLLL.LLLLLLLLLL
LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLL.L.LLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLL.LL.LLLLLLLLLLLLLLL
LLLLLLLL.L.LLLL.LLLLLLL.LLLLLLL.LLLLLLLLLLL.LLLL..LLLLL..LLL.LLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLL
.LL..LLL.LLL..LL.LL....LLLL.....LLLL..LLLL.L.L...........L...L.LLLLLL..LL..LL.LL.L.....LL.L...
LLLLLLLL.LLLLLL.LLLLLLLLLL.L.LLLLLLLLLLL.LLLLLLLLLLLLLLLLLLL..LLLLLL.LLLLLLLLLLL.LL.LLLLLLLLLL
LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLL.LLL.LLLL.LLLLLLL.LLLLLL.LLLL.LLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLL
LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL..LLLLLL.LLLLLL.LLLL.LLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLL
LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLL..LLLLLL.LLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLL
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLL.LLLL.LLLLL.LLL.LLLL.LLLLLLL.LL
...............L.....L.....L....L.L....L.L.L.L.L.L..L..LL..L.......L.LLL.L.L.L...L..L.L.L..LLL
LLLLLLLL.LLLLLL.LLLLLLL.LLLLLLL..LLLLLLLLLLLLLLL..LLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLL..LLLLLLLLL
L.LLLLLLLL.LLLLLLLLLLLL.LLLLL.L.LL.LLLLL.LLLLLLL.LLLLLL.LLLL.LLLLLLL.LLLLL.LLL.LLLL.LLLLLLLL.L
LLLLLLLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLL
LLLLLLLLLL.LLLL.LLLLLLL..LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLL
LLLLLLLLLL.LLLL..LLLLLL.LLLLLLL.LLLLLLLLL.LL.LLL.LLLLLLLLLLL.LLLLLL..LLLLLL.LL.LLLLLLLLLLLLLLL
LLLLLLLLLL.LLLL.L.LLLLL.LLLLLLL.LLLLLLLL.L.LLLLL.LLLLLL.LLLL.LLLLL.LLLLLLLLLLL.L..L.LLLLLLLLLL
LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLL.LLLL.LLLLLLLLLL
LLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLL.L.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLL.LLLL.LLLL.L.LLLLLLLL
.LLL..L.L.LL.L.LL.LL.LLL.L..L.L.....L....L...L.L......L.LL....L.LL..L.......L..L...L..L...LLL.
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLL..LLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL.L.LLLLLLL..LLLL.LLLLLLLLL
L..LLLLLLLLLLLL.LLLLLLL.LLLLLLL.LLLLL.LL.LLLLLLLLLLLLLLLLLLL.LLL.LLL.LL.LLLLLL.LLLL.LLLLLLLLLL
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLL..LLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLL
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLL.LL
LLL.LLLLLL.LLLL.LLLLLLL.LLLLLLLLLLLLLLL..LLLLLLLLLLLLLLLLLL..LLLLLLL.LLLLLLLLL.LL.LLLLLL.LLLLL
LLL.LLLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLL
..L...LLL......L....L..LL..LLLLL..L...L..LL.L.L....L...L.LL..L..L.LLL.....L.L...L......L.LL..L
LL.LLLLLLL.LLLL.LLLL.LL.LLLLLLL..LLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLLL.LLLLLLLL...LLL.L.LLLLLLLL
LLLLLLLLLL.L.LL.L.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLL.L.LLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLL.LL
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLL.LL.LLLLLLLLL.LLLLLLLLLLLLLLL
LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLL
L.LLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLL
LLLL.LLLLL.LLLL.LLLLLLL.LLLLLLL.LLLLLLLLLLLLL.LL.LLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLL
LL......LL...L......L.L...LL..L.L...LL.L........L.LL.LL.LL...L...LL.....L..LL.L....L.L..LLL..L
LLLLLLLLLL.LLLL.L.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLL.LLLLLL.LL.LLLL.LLLLLLLLLL
LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLL.LLLLLL.LLLL.LLLLLLL.LLLLLLLLL.LLLLL.LLLLL.LLL
LLLL.LL.LL.LLLL.LLLLLLLLLL..LLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.L.LLLLLLLL
LLLL.LLLLL.LLLL.LLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL
LLLLLLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLL..LLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLL
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLL.LLLLLLLLLL.LLL.LLLLLLL.LLLLLLLLL.
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.L..LLLLLLLLLLL.LLL.LLLLLL
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLL
LLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLL.LL.LLLL.LLLLLL..LLLLLLLLL.LLLL.LLLLLLLLLL
.....LL..LL.......L.L.....L.....L....L..L.L...L.L.L.L...L.L..L.LLL.............L...........L.L
L.LLLLLLLL.LLLL.LLLLLLLLLLLLLLL.LLLL.LLLLLLLLLL.LLLLLLL.LLLL.LLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLL
LLLLLLLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLL..LLLLLLLLLLLLLLLLLLLLL.LL.L.L.LLLLLLLL
LLLLLLLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLL.LLLLLL.LLLLLL..LLLLLLLLLL
LLLLLLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLL.LLLLLL.LLLL.LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL..LLLLLL.LLLLLL.LLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLL
LLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLL.LLL.LLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLL
.LLL.....L...L.LLL.L.....L.L........L..LL.L.L.LL.....L..L.L.LL.LLLLLL..LL...L..L...LL.L.LL....
LLLLLLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLL.LLLLLL.LLLL.LLLLL.L.LLLLLLLLL.LLLL.LLLLLLL.LL
LLLLLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLL.LLLLLL.LLLL.LL.LLLLLLLLLLLLLLLLLLL.LLLLLLLLLL
LLLLLLLLLL.LLLL.LLLLLLL.LL.LLLL.LLLLLLLL.LLLLLLL.LLLLLL.LLLL...LLLLL.LLLLLLLLL.LLLL.LLLLLLLLLL
LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLL
LLLLLLLLL..LLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLL
.L..L.L.LL..........L..L.............LLLL..L.......LL....L..L.......L.........L..L.L..LL....LL
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLL.LLLLLLL.LLLL.LLLL.LLLL.LLLLLLLLLL
LLLLLLLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLL.LLLLLLL.LL
LLLLLLLLLL.LLLL.LLL.LLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL
LLLLL.LLLL.LLLL.LLLLLLL.LLLLLLL.LLLLLLLL.LLLLL.L.LLLLLLL.LLL.LLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLL
..L.....L......L....L..LLL..L.L..L....L..LL....L.L........LL...L.......L..L.L.L..LL..L.L.....L
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLL.LL.LLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLLL.LLLLLLLLLLLLLLL
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLL..LLLLLLLLLL
LLLLLLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLL.LL..LLL.LLLLLL.LLLL.LLLLLLL.LLLLLLLL..LL.L.LLLLLLL.LL
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLLLLLLLLLLL..LLL.LLLLLLLLLLLLLL.LLL.LLL.LLL.LLLLLLLLLLLLLLLLLLLL.
LLLLLLLLLL.LL.L.LLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLL
LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLL.LLLLLLL.LLLLLLLLLLL.LL.LLLLLLLLLL
1 change: 1 addition & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -23,3 +23,4 @@ aoc2020(7)
aoc2020(8)
aoc2020(9)
aoc2020(10)
aoc2020(11)
1 change: 0 additions & 1 deletion src/day10.cpp
Original file line number Diff line number Diff line change
@@ -2,7 +2,6 @@

#include <range/v3/all.hpp>
#include <fmt/core.h>
#include <iostream>
#include <unordered_set>
#include <unordered_map>
#include <algorithm>
159 changes: 159 additions & 0 deletions src/day11.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
#include "input_file_loader.h"

#include <range/v3/all.hpp>
#include <fmt/core.h>
#include <utility>

template <typename T>
class PaddedVector2D
{
public:
PaddedVector2D(std::size_t n_cols, T m_padding_value, std::vector<T> raw)
: m_raw{ std::move(raw) }
, m_n_cols{ n_cols }
, m_padding_value{ std::move(m_padding_value) }
{}

const T& at(int row, int column) const
{
if (row < 0 || row > rows() - 1 || column < 0 || column > cols() - 1) {
return m_padding_value;
} else {
return m_raw[index(row, column)];
}
}

T& at(int row, int column)
{
if (row < 0 || row > rows() - 1 || column < 0 || column > cols() - 1) {
return m_padding_value;
} else {
return m_raw[index(row, column)];
}
}

std::size_t rows() const
{
return m_raw.size() / m_n_cols;
}

std::size_t cols() const
{
return m_n_cols;
}

const std::vector<T>& raw() const
{
return m_raw;
}

private:
std::size_t index(int row, int column) const
{
return m_n_cols * row + column;
};

std::vector<T> m_raw;
std::size_t m_n_cols;
T m_padding_value;
};

enum class SeatState {
Empty,
Occupied,
Missing
};

PaddedVector2D<SeatState> parse(std::istream &&is) {
std::vector<SeatState> result;
std::size_t column_size = 0;
for (std::string line; std::getline(is, line);) {
if (column_size == 0) column_size = line.size();
ranges::transform(
line,
std::back_inserter(result),
[](char c) { return c == 'L' ? SeatState::Empty : SeatState::Missing; });
}

return PaddedVector2D{ column_size, SeatState::Empty, std::move(result) };
}

constexpr std::array neighbours {
std::pair{-1, -1},
std::pair{-1, 0},
std::pair{-1, 1},
std::pair{0, -1},
std::pair{0, 1},
std::pair{1, -1},
std::pair{1, 0},
std::pair{1, 1},
};

constexpr auto count_neighbours_1 = [](const PaddedVector2D<SeatState>& data, int row, int column)
{
return ranges::count(
neighbours
| ranges::views::transform([&data, row, column](auto p) { return data.at(p.first + row, p.second + column); }),
SeatState::Occupied);
};

constexpr auto next_state_1 = [](SeatState old, int neighbours) {
if (old == SeatState::Occupied && neighbours >= 4)
return SeatState::Empty;
else if (old == SeatState::Empty && neighbours == 0)
return SeatState::Occupied;
else
return old;
};

constexpr auto count_neighbours_2 = [](const PaddedVector2D<SeatState>& data, int row, int column)
{
return ranges::count(
neighbours
| ranges::views::transform([&data, row, column](auto p) {
auto r = p.first + row;
auto c = p.second + column;
while (data.at(r, c) == SeatState::Missing) {
r += p.first;
c += p.second;
}
return data.at(r, c);
}),
SeatState::Occupied);
};

constexpr auto next_state_2 = [](SeatState old, int neighbours) {
if (old == SeatState::Occupied && neighbours >= 5)
return SeatState::Empty;
else if (old == SeatState::Empty && neighbours == 0)
return SeatState::Occupied;
else
return old;
};

template <auto next_state, auto count_neighbours>
PaddedVector2D<SeatState> simulate_until_steady(PaddedVector2D<SeatState> arrangement)
{
int diff = 0;
auto old = arrangement;
do {
diff = 0;
for (int row = 0; row < arrangement.rows(); ++row) {
for (int column = 0; column < arrangement.cols(); ++column) {
const auto old_value = old.at(row, column);
const auto new_value = next_state(old_value, count_neighbours(old, row, column));
if (old_value != new_value) { ++diff; }
arrangement.at(row, column) = new_value;
}
}
std::swap(arrangement, old);
} while (diff > 0);
return old;
}

int main(int argc, char **argv)
{
auto data = parse(load_input(argc, argv));
fmt::print("Part 1: {}\n", ranges::count(simulate_until_steady<next_state_1, count_neighbours_1>(data).raw(), SeatState::Occupied));
fmt::print("Part 2: {}\n", ranges::count(simulate_until_steady<next_state_2, count_neighbours_2>(data).raw(), SeatState::Occupied));
}
1 change: 0 additions & 1 deletion src/day9.cpp
Original file line number Diff line number Diff line change
@@ -3,7 +3,6 @@
#include <range/v3/all.hpp>
#include <fmt/core.h>
#include <vector>
#include <iostream>

std::vector<long long> parse(std::istream&& is)
{

0 comments on commit 3481a48

Please sign in to comment.