9void print(std::array<std::array<bool, 13>, 13>
const& adj)
11 for (
unsigned i{}; adj.size() > i; ++i) {
12 for (
unsigned j{}; adj[i].size() > j; ++j) {
13 std::cout << adj[i][j] <<
' ';
19[[nodiscard]] std::vector<std::pair<unsigned, unsigned>> generate(
unsigned idx)
21 std::array<std::array<bool, 13>, 13> adj{};
26 for (
unsigned i{}; 8 > i; ++i) {
28 adj[i + 1][i + 1] = (idx & (1u << i)) ? true :
false;
30 adj[i][i] = (idx & (1u << i)) ? true :
false;
34 for (
unsigned i = 9; 13 > i; ++i) {
47 adj[0][1] = adj[0][0] && adj[1][1];
48 adj[0][3] = adj[0][0] && adj[3][3];
49 adj[0][9] = adj[0][0] && !(adj[1][1] && adj[3][3]);
55 adj[1][2] = adj[1][1] && adj[2][2];
56 adj[1][4] = adj[1][1] && ((!adj[0][0] && !adj[3][3]) || (!adj[2][2] && !adj[5][5]));
57 adj[1][9] = adj[1][1] && !adj[0][0] && adj[3][3];
58 adj[1][10] = adj[1][1] && !adj[2][2] && adj[5][5];
62 adj[2][5] = adj[2][2] && adj[5][5];
63 adj[2][10] = adj[2][2] && !(adj[1][1] && adj[5][5]);
69 adj[3][4] = adj[3][3] && ((!adj[0][0] && !adj[1][1]) || (!adj[6][6] && !adj[7][7]));
70 adj[3][6] = adj[3][3] && adj[6][6];
71 adj[3][9] = adj[3][3] && !adj[0][0] && adj[1][1];
72 adj[3][11] = adj[3][3] && !adj[6][6] && adj[7][7];
81 adj[4][5] = ((!adj[1][1] && !adj[2][2]) || (!adj[7][7] && !adj[8][8]));
82 adj[4][7] = ((!adj[3][3] && !adj[6][6]) || (!adj[5][5] && !adj[8][8]));
83 adj[4][9] = adj[0][0] && !(adj[1][1] && adj[3][3]);
84 adj[4][10] = adj[2][2] && !(adj[1][1] && adj[5][5]);
85 adj[4][11] = adj[6][6] && !(adj[3][3] && adj[7][7]);
86 adj[4][12] = adj[8][8] && !(adj[5][5] && adj[7][7]);
91 adj[5][8] = adj[5][5] && adj[8][8];
92 adj[5][10] = adj[5][5] && adj[1][1] && !adj[2][2];
93 adj[5][12] = adj[5][5] && adj[7][7] && !adj[8][8];
97 adj[6][7] = adj[6][6] && adj[7][7];
98 adj[6][11] = adj[6][6] && !(adj[3][3] && adj[7][7]);
103 adj[7][8] = adj[7][7] && adj[8][8];
104 adj[7][11] = adj[7][7] && adj[3][3] && !adj[6][6];
105 adj[7][12] = adj[7][7] && adj[5][5] && !adj[8][8];
108 adj[8][12] = adj[8][8] && !(adj[5][5] && adj[7][7]);
110 std::vector<std::pair<unsigned, unsigned>> edges;
112 for (
unsigned i{}; adj.size() > i; ++i) {
113 for (
unsigned j = i + 1; adj[i].size() > j; ++j) {
114 if (adj[i][i] && adj[j][j] && adj[i][j]) {
115 edges.emplace_back(i, j);
123int main(
int argc,
char* argv[])
125 for (
unsigned i{}; std::numeric_limits<std::uint8_t>::max() >= i; ++i) {
127 std::cout << R
"(std::array<std::uint8_t, 25>{)";
128 auto a = generate(i);
129 std::cout << (2 *
a.size());
130 for (
auto [a, b] :
a) {
131 std::cout <<
", " <<
a <<
", " <<
b;
constexpr T b(Lab< T, Flags > color) noexcept
Returns the un-weighted blue–yellow axis value.
constexpr T a(Lab< T, Flags > color) noexcept
Returns the un-weighted green–red axis value.