Day18 C
This commit is contained in:
BIN
day18/c/day18
Executable file
BIN
day18/c/day18
Executable file
Binary file not shown.
369
day18/c/day18.c
Normal file
369
day18/c/day18.c
Normal file
@@ -0,0 +1,369 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <limits.h>
|
||||
|
||||
#define LINE_MAX_LENGTH 256
|
||||
#define MAX_ENTRIES 2048
|
||||
#define MAX_QUEUE_LEN 256
|
||||
#define MAX_EDGES 1024
|
||||
#define MAX_BREAKPOINTS 512
|
||||
#define min(a,b) ((a) < (b) ? (a) : (b))
|
||||
#define max(a,b) ((a) > (b) ? (a) : (b))
|
||||
|
||||
typedef struct entry {
|
||||
char direction;
|
||||
long long count;
|
||||
char rgb_string[10];
|
||||
} entry_t;
|
||||
|
||||
typedef struct zone {
|
||||
long long upper_left_corner[2];
|
||||
long long lower_right_corner[2];
|
||||
uint8_t outside;
|
||||
} zone_t;
|
||||
|
||||
int cmp(const void* a, const void* b);
|
||||
int on_edge(long long edges[MAX_EDGES][2][2], int edges_num, long long side[2][2]);
|
||||
unsigned long long lake_volume(entry_t entries[], int entries_num);
|
||||
void decode_rgbs(entry_t entries[], int entries_num);
|
||||
|
||||
int main() {
|
||||
char *p, *buf, c;
|
||||
|
||||
buf = (char *)malloc(LINE_MAX_LENGTH);
|
||||
memset(buf, 0, LINE_MAX_LENGTH);
|
||||
p = buf;
|
||||
|
||||
entry_t entries[MAX_ENTRIES];
|
||||
memset(entries, 0, MAX_ENTRIES * sizeof(entry_t));
|
||||
int entries_num = 0;
|
||||
|
||||
while ((c = getchar()) != EOF) {
|
||||
*p++ = c;
|
||||
if (c == '\n') {
|
||||
sscanf(buf, "%c %lli %s", &entries[entries_num].direction, &entries[entries_num].count, entries[entries_num].rgb_string);
|
||||
entries_num++;
|
||||
memset(buf, 0, LINE_MAX_LENGTH);
|
||||
p = buf;
|
||||
}
|
||||
}
|
||||
|
||||
unsigned long long part1 = lake_volume(entries, entries_num);
|
||||
|
||||
decode_rgbs(entries, entries_num);
|
||||
|
||||
unsigned long long part2 = lake_volume(entries, entries_num);
|
||||
|
||||
printf("%llu\n", part1);
|
||||
printf("%llu\n", part2);
|
||||
|
||||
free(buf);
|
||||
}
|
||||
|
||||
int cmp(const void* a, const void* b) {
|
||||
return *(long long*)a - *(long long*)b;
|
||||
}
|
||||
|
||||
int on_edge(long long edges[MAX_EDGES][2][2], int edges_num, long long side[2][2]) {
|
||||
for (int i = 0; i < edges_num; i++) {
|
||||
if (edges[i][0][0] == side[0][0] && edges[i][0][0] == edges[i][1][0] && side[0][0] == side[1][0] && edges[i][0][1] <= side[0][1] && edges[i][1][1] >= side[1][1]) {
|
||||
return 1;
|
||||
}
|
||||
if (edges[i][0][1] == side[0][1] && edges[i][0][1] == edges[i][1][1] && side[0][1] == side[1][1] && edges[i][0][0] <= side[0][0] && edges[i][1][0] >= side[1][0]) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned long long lake_volume(entry_t entries[], int entries_num) {
|
||||
long long x = 0, y = 0, dir[2];
|
||||
|
||||
long long edges[MAX_EDGES][2][2];
|
||||
memset(edges, 0, MAX_EDGES * 2 * 2 * sizeof(long long));
|
||||
int edges_num = 0;
|
||||
|
||||
for (int i = 0; i < entries_num; i++) {
|
||||
switch (entries[i].direction) {
|
||||
case 'R':
|
||||
dir[0] = 1;
|
||||
dir[1] = 0;
|
||||
edges[edges_num][0][0] = x;
|
||||
edges[edges_num][0][1] = y;
|
||||
edges[edges_num][1][0] = x + entries[i].count * dir[0];
|
||||
edges[edges_num][1][1] = y + entries[i].count * dir[1];
|
||||
edges_num++;
|
||||
break;
|
||||
case 'L':
|
||||
dir[0] = -1;
|
||||
dir[1] = 0;
|
||||
edges[edges_num][1][0] = x;
|
||||
edges[edges_num][1][1] = y;
|
||||
edges[edges_num][0][0] = x + entries[i].count * dir[0];
|
||||
edges[edges_num][0][1] = y + entries[i].count * dir[1];
|
||||
edges_num++;
|
||||
break;
|
||||
case 'U':
|
||||
dir[0] = 0;
|
||||
dir[1] = -1;
|
||||
edges[edges_num][1][0] = x;
|
||||
edges[edges_num][1][1] = y;
|
||||
edges[edges_num][0][0] = x + entries[i].count * dir[0];
|
||||
edges[edges_num][0][1] = y + entries[i].count * dir[1];
|
||||
edges_num++;
|
||||
break;
|
||||
case 'D':
|
||||
dir[0] = 0;
|
||||
dir[1] = 1;
|
||||
edges[edges_num][0][0] = x;
|
||||
edges[edges_num][0][1] = y;
|
||||
edges[edges_num][1][0] = x + entries[i].count * dir[0];
|
||||
edges[edges_num][1][1] = y + entries[i].count * dir[1];
|
||||
edges_num++;
|
||||
break;
|
||||
}
|
||||
|
||||
x += entries[i].count * dir[0];
|
||||
y += entries[i].count * dir[1];
|
||||
}
|
||||
|
||||
// Find smallest and largest x and y
|
||||
long long min_x = LLONG_MAX, max_x = LLONG_MIN, min_y = LLONG_MAX, max_y = LLONG_MIN;
|
||||
for (int i = 0; i < edges_num; i++) {
|
||||
if (edges[i][0][0] < min_x) {
|
||||
min_x = edges[i][0][0];
|
||||
}
|
||||
if (edges[i][1][0] > max_x) {
|
||||
max_x = edges[i][1][0];
|
||||
}
|
||||
if (edges[i][0][1] < min_y) {
|
||||
min_y = edges[i][0][1];
|
||||
}
|
||||
if (edges[i][1][1] > max_y) {
|
||||
max_y = edges[i][1][1];
|
||||
}
|
||||
}
|
||||
|
||||
// X breakpoints
|
||||
long long x_breakpoints[MAX_BREAKPOINTS], x_breakpoints_num = 0;
|
||||
for (int i = 0; i < edges_num; i++) {
|
||||
int found = 0;
|
||||
for (int j = 0; j < x_breakpoints_num; j++) {
|
||||
if (edges[i][0][0] == x_breakpoints[j]) {
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
x_breakpoints[x_breakpoints_num] = edges[i][0][0];
|
||||
x_breakpoints_num++;
|
||||
}
|
||||
found = 0;
|
||||
for (int j = 0; j < x_breakpoints_num; j++) {
|
||||
if (edges[i][1][0] == x_breakpoints[j]) {
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
x_breakpoints[x_breakpoints_num] = edges[i][1][0];
|
||||
x_breakpoints_num++;
|
||||
}
|
||||
}
|
||||
qsort(x_breakpoints, x_breakpoints_num, sizeof(x_breakpoints[0]), &cmp);
|
||||
|
||||
// Y breakpoints
|
||||
long long y_breakpoints[MAX_BREAKPOINTS], y_breakpoints_num = 0;
|
||||
for (int i = 0; i < edges_num; i++) {
|
||||
int found = 0;
|
||||
for (int j = 0; j < y_breakpoints_num; j++) {
|
||||
if (edges[i][0][1] == y_breakpoints[j]) {
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
y_breakpoints[y_breakpoints_num] = edges[i][0][1];
|
||||
y_breakpoints_num++;
|
||||
}
|
||||
found = 0;
|
||||
for (int j = 0; j < y_breakpoints_num; j++) {
|
||||
if (edges[i][1][1] == y_breakpoints[j]) {
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
y_breakpoints[y_breakpoints_num] = edges[i][1][1];
|
||||
y_breakpoints_num++;
|
||||
}
|
||||
}
|
||||
qsort(y_breakpoints, y_breakpoints_num, sizeof(y_breakpoints[0]), &cmp);
|
||||
|
||||
zone_t **zones = (zone_t**)malloc((x_breakpoints_num - 1) * sizeof(zone_t*));
|
||||
for (int i = 0; i < x_breakpoints_num - 1; i++) {
|
||||
zones[i] = (zone_t*)malloc((y_breakpoints_num - 1) * sizeof(zone_t));
|
||||
memset(zones[i], 0, (y_breakpoints_num - 1) * sizeof(zone_t));
|
||||
}
|
||||
zone_t *curr;
|
||||
|
||||
for (int i = 0; i < y_breakpoints_num - 1; i++) {
|
||||
for (int j = 0; j < x_breakpoints_num - 1; j++) {
|
||||
curr = &zones[j][i];
|
||||
curr->upper_left_corner[0] = x_breakpoints[j];
|
||||
curr->upper_left_corner[1] = y_breakpoints[i];
|
||||
curr->lower_right_corner[0] = x_breakpoints[j + 1];
|
||||
curr->lower_right_corner[1] = y_breakpoints[i + 1];
|
||||
}
|
||||
}
|
||||
|
||||
// Mark zones as outside
|
||||
int found = 1;
|
||||
while (found) {
|
||||
found = 0;
|
||||
for (int i = 0; i < y_breakpoints_num - 1; i++) {
|
||||
for (int j = 0; j < x_breakpoints_num - 1; j++) {
|
||||
if (zones[j][i].outside) {
|
||||
continue;
|
||||
}
|
||||
// LEFT
|
||||
long long side[2][2];
|
||||
side[0][0] = zones[j][i].upper_left_corner[0];
|
||||
side[0][1] = zones[j][i].upper_left_corner[1];
|
||||
side[1][0] = zones[j][i].upper_left_corner[0];
|
||||
side[1][1] = zones[j][i].lower_right_corner[1];
|
||||
if (j == 0 && !on_edge(edges, edges_num, side)) {
|
||||
zones[j][i].outside = 1;
|
||||
found = 1;
|
||||
}
|
||||
if (j > 0 && zones[j-1][i].outside && !on_edge(edges, edges_num, side)) {
|
||||
zones[j][i].outside = 1;
|
||||
found = 1;
|
||||
}
|
||||
// RIGHT
|
||||
side[0][0] = zones[j][i].lower_right_corner[0];
|
||||
side[0][1] = zones[j][i].upper_left_corner[1];
|
||||
side[1][0] = zones[j][i].lower_right_corner[0];
|
||||
side[1][1] = zones[j][i].lower_right_corner[1];
|
||||
if (j == x_breakpoints_num - 2 && !on_edge(edges, edges_num, side)) {
|
||||
zones[j][i].outside = 1;
|
||||
found = 1;
|
||||
}
|
||||
if (j < x_breakpoints_num - 2 && zones[j+1][i].outside && !on_edge(edges, edges_num, side)) {
|
||||
zones[j][i].outside = 1;
|
||||
found = 1;
|
||||
}
|
||||
// UP
|
||||
side[0][0] = zones[j][i].upper_left_corner[0];
|
||||
side[0][1] = zones[j][i].upper_left_corner[1];
|
||||
side[1][0] = zones[j][i].lower_right_corner[0];
|
||||
side[1][1] = zones[j][i].upper_left_corner[1];
|
||||
if (i == 0 && !on_edge(edges, edges_num, side)) {
|
||||
zones[j][i].outside = 1;
|
||||
found = 1;
|
||||
}
|
||||
if (i > 0 && zones[j][i-1].outside && !on_edge(edges, edges_num, side)) {
|
||||
zones[j][i].outside = 1;
|
||||
found = 1;
|
||||
}
|
||||
// DOWN
|
||||
side[0][0] = zones[j][i].upper_left_corner[0];
|
||||
side[0][1] = zones[j][i].lower_right_corner[1];
|
||||
side[1][0] = zones[j][i].lower_right_corner[0];
|
||||
side[1][1] = zones[j][i].lower_right_corner[1];
|
||||
if (i == y_breakpoints_num - 2 && !on_edge(edges, edges_num, side)) {
|
||||
zones[j][i].outside = 1;
|
||||
found = 1;
|
||||
}
|
||||
if (i < y_breakpoints_num - 2 && zones[j][i+1].outside && !on_edge(edges, edges_num, side)) {
|
||||
zones[j][i].outside = 1;
|
||||
found = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unsigned long long sum = 0;
|
||||
unsigned long long out = 0;
|
||||
for (int i = 0; i < y_breakpoints_num - 1; i++) {
|
||||
for (int j = 0; j < x_breakpoints_num - 1; j++) {
|
||||
if (zones[j][i].outside) {
|
||||
out++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < y_breakpoints_num - 1; i++) {
|
||||
for (int j = 0; j < x_breakpoints_num - 1; j++) {
|
||||
if (zones[j][i].outside) {
|
||||
continue;
|
||||
}
|
||||
sum += (zones[j][i].lower_right_corner[0] - zones[j][i].upper_left_corner[0] - 1) * (zones[j][i].lower_right_corner[1] - zones[j][i].upper_left_corner[1] - 1);
|
||||
// RIGHT
|
||||
long long side[2][2];
|
||||
side[0][0] = zones[j][i].lower_right_corner[0];
|
||||
side[0][1] = zones[j][i].upper_left_corner[1];
|
||||
side[1][0] = zones[j][i].lower_right_corner[0];
|
||||
side[1][1] = zones[j][i].lower_right_corner[1];
|
||||
if (!on_edge(edges, edges_num, side)) {
|
||||
sum += side[1][1] - side[0][1] - 1;
|
||||
}
|
||||
// DOWN
|
||||
side[0][1] = zones[j][i].lower_right_corner[1];
|
||||
side[0][0] = zones[j][i].upper_left_corner[0];
|
||||
side[1][0] = zones[j][i].lower_right_corner[0];
|
||||
side[1][1] = zones[j][i].lower_right_corner[1];
|
||||
if (!on_edge(edges, edges_num, side)) {
|
||||
sum += side[1][0] - side[0][0] - 1;
|
||||
}
|
||||
// CORNER
|
||||
side[0][1] = zones[j][i].lower_right_corner[1];
|
||||
side[0][0] = zones[j][i].lower_right_corner[0];
|
||||
side[1][0] = zones[j][i].lower_right_corner[0];
|
||||
side[1][1] = zones[j][i].lower_right_corner[1];
|
||||
if (!on_edge(edges, edges_num, side)) {
|
||||
sum++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < edges_num; i++) {
|
||||
sum += (edges[i][1][0] - edges[i][0][0]) + (edges[i][1][1] - edges[i][0][1]);
|
||||
}
|
||||
|
||||
for (int i = 0; i < x_breakpoints_num - 1; i++) {
|
||||
free(zones[i]);
|
||||
}
|
||||
free(zones);
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
void decode_rgbs(entry_t entries[], int entries_num) {
|
||||
for (int i = 0; i < entries_num; i++) {
|
||||
char value[6], *p;
|
||||
memset(value, 0, 6);
|
||||
p = entries[i].rgb_string;
|
||||
while(*p != '#') p++;
|
||||
p++;
|
||||
strncpy(value, p, 5);
|
||||
sscanf(value, "%llx", &entries[i].count);
|
||||
switch(entries[i].rgb_string[7]) {
|
||||
case '0':
|
||||
entries[i].direction = 'R';
|
||||
break;
|
||||
case '1':
|
||||
entries[i].direction = 'D';
|
||||
break;
|
||||
case '2':
|
||||
entries[i].direction = 'L';
|
||||
break;
|
||||
case '3':
|
||||
entries[i].direction = 'U';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
660
day18/input.txt
Normal file
660
day18/input.txt
Normal file
@@ -0,0 +1,660 @@
|
||||
L 3 (#07b412)
|
||||
D 5 (#713ad1)
|
||||
L 2 (#11e6d2)
|
||||
D 4 (#6ba7d3)
|
||||
L 3 (#7cfca2)
|
||||
U 5 (#0a85c3)
|
||||
L 2 (#3a5282)
|
||||
U 4 (#6f91a3)
|
||||
L 3 (#32c2f0)
|
||||
U 6 (#2dd7b3)
|
||||
L 6 (#848c30)
|
||||
U 7 (#077a43)
|
||||
R 5 (#ba4692)
|
||||
U 6 (#49b551)
|
||||
R 3 (#14d162)
|
||||
U 8 (#397871)
|
||||
R 5 (#1c73f2)
|
||||
D 8 (#7130e1)
|
||||
R 4 (#c84852)
|
||||
U 2 (#203b91)
|
||||
R 3 (#288e30)
|
||||
U 5 (#91ba91)
|
||||
R 4 (#5dda70)
|
||||
U 3 (#91ba93)
|
||||
R 4 (#732500)
|
||||
U 4 (#0676f1)
|
||||
L 9 (#6701a2)
|
||||
U 4 (#5c38c1)
|
||||
L 7 (#0f7480)
|
||||
U 4 (#921b21)
|
||||
L 6 (#83d9e0)
|
||||
U 2 (#28c691)
|
||||
L 7 (#1b6de0)
|
||||
U 2 (#02cee1)
|
||||
L 4 (#5b66b0)
|
||||
U 4 (#bdb093)
|
||||
L 6 (#75eb20)
|
||||
U 4 (#928251)
|
||||
L 4 (#6bb430)
|
||||
D 7 (#44ad91)
|
||||
L 2 (#806b50)
|
||||
U 7 (#7d1391)
|
||||
L 4 (#7a3652)
|
||||
U 5 (#9cbf41)
|
||||
L 5 (#905712)
|
||||
U 2 (#70beb3)
|
||||
L 2 (#bede02)
|
||||
U 7 (#70beb1)
|
||||
R 3 (#a2c232)
|
||||
U 5 (#7b0ad1)
|
||||
R 5 (#01d012)
|
||||
U 5 (#2b1901)
|
||||
R 7 (#698c32)
|
||||
U 4 (#a19d91)
|
||||
R 4 (#7dbb92)
|
||||
U 3 (#8feb41)
|
||||
R 5 (#021ab2)
|
||||
U 3 (#42a773)
|
||||
R 6 (#99c6c2)
|
||||
D 7 (#8f7b33)
|
||||
R 5 (#01fd82)
|
||||
D 5 (#8e7263)
|
||||
R 2 (#37e492)
|
||||
U 5 (#10bff3)
|
||||
R 5 (#a09242)
|
||||
U 7 (#126723)
|
||||
R 3 (#864230)
|
||||
D 8 (#70bc43)
|
||||
R 5 (#7cf4a0)
|
||||
D 2 (#8135d3)
|
||||
R 6 (#144b70)
|
||||
U 5 (#0c51e3)
|
||||
L 6 (#00e590)
|
||||
U 4 (#44ba73)
|
||||
L 2 (#4177e2)
|
||||
U 4 (#a4c5b1)
|
||||
L 6 (#6f2f12)
|
||||
U 3 (#9a4ce1)
|
||||
L 4 (#979402)
|
||||
D 7 (#2a0ce1)
|
||||
L 3 (#0c1b70)
|
||||
U 7 (#58ca71)
|
||||
L 3 (#95d640)
|
||||
U 4 (#549241)
|
||||
R 10 (#a1f1b2)
|
||||
U 3 (#1753b1)
|
||||
L 5 (#1d32d2)
|
||||
U 5 (#9a58d3)
|
||||
L 5 (#4dc1b2)
|
||||
U 6 (#1ab693)
|
||||
L 4 (#5e8df2)
|
||||
U 3 (#4dabf3)
|
||||
R 6 (#972492)
|
||||
U 5 (#3198c3)
|
||||
R 4 (#972490)
|
||||
U 3 (#54b613)
|
||||
R 6 (#4a8bb2)
|
||||
U 2 (#a4c5b3)
|
||||
R 3 (#126042)
|
||||
U 9 (#54acc3)
|
||||
L 5 (#2b4682)
|
||||
U 4 (#88f453)
|
||||
L 4 (#2b4680)
|
||||
U 8 (#4a4283)
|
||||
L 2 (#8bfdf0)
|
||||
U 2 (#a76851)
|
||||
L 4 (#0a9b30)
|
||||
U 6 (#43a141)
|
||||
L 3 (#14fd80)
|
||||
U 3 (#7e5391)
|
||||
L 6 (#43ba40)
|
||||
D 2 (#146e93)
|
||||
L 4 (#9c71b0)
|
||||
D 7 (#5ae483)
|
||||
L 5 (#0bcd70)
|
||||
U 6 (#52a1c3)
|
||||
L 4 (#3307f0)
|
||||
U 4 (#1da3f3)
|
||||
L 3 (#7a8c80)
|
||||
D 5 (#89c463)
|
||||
L 2 (#2984e0)
|
||||
D 2 (#828673)
|
||||
L 6 (#2cf252)
|
||||
U 7 (#500061)
|
||||
L 4 (#a07ff2)
|
||||
U 3 (#565f21)
|
||||
R 3 (#09ef22)
|
||||
U 3 (#a65f83)
|
||||
R 5 (#410672)
|
||||
U 4 (#24fe73)
|
||||
L 5 (#b6ed72)
|
||||
U 8 (#4574d3)
|
||||
L 6 (#2e3142)
|
||||
D 8 (#7ba311)
|
||||
L 3 (#1bc442)
|
||||
U 6 (#38b161)
|
||||
L 4 (#8ada92)
|
||||
U 2 (#24cdf1)
|
||||
L 3 (#37b3e2)
|
||||
U 3 (#3a3ec1)
|
||||
R 5 (#242ea2)
|
||||
U 2 (#1fe073)
|
||||
R 5 (#9ad182)
|
||||
U 6 (#4a9193)
|
||||
R 6 (#34c480)
|
||||
U 2 (#9ff123)
|
||||
R 5 (#34c482)
|
||||
U 4 (#08fe03)
|
||||
R 3 (#46d292)
|
||||
D 10 (#19fca3)
|
||||
R 3 (#1ea7d2)
|
||||
D 6 (#c2d531)
|
||||
R 8 (#614f82)
|
||||
D 6 (#c2d533)
|
||||
R 6 (#777202)
|
||||
D 2 (#38f573)
|
||||
R 3 (#84e142)
|
||||
D 3 (#036d11)
|
||||
R 5 (#113352)
|
||||
D 5 (#036d13)
|
||||
R 3 (#7ad752)
|
||||
U 4 (#969de3)
|
||||
R 7 (#7887d0)
|
||||
U 3 (#31aa61)
|
||||
R 4 (#affca0)
|
||||
U 6 (#31aa63)
|
||||
R 2 (#374010)
|
||||
U 6 (#574d53)
|
||||
L 4 (#4edbd2)
|
||||
U 2 (#2271c1)
|
||||
L 7 (#595d32)
|
||||
U 3 (#2271c3)
|
||||
R 3 (#2c6532)
|
||||
U 5 (#2754d3)
|
||||
R 8 (#8b2652)
|
||||
U 4 (#b27ab3)
|
||||
R 6 (#824b80)
|
||||
D 4 (#587173)
|
||||
R 4 (#3715b0)
|
||||
D 5 (#8f0b61)
|
||||
R 3 (#6a2ac0)
|
||||
D 3 (#1e0b21)
|
||||
R 5 (#29a290)
|
||||
D 3 (#8850b3)
|
||||
R 5 (#9013e0)
|
||||
D 3 (#24c5d3)
|
||||
R 5 (#2b12d0)
|
||||
U 6 (#4090a3)
|
||||
R 3 (#9cddd0)
|
||||
D 6 (#a93843)
|
||||
R 4 (#6fff30)
|
||||
D 4 (#3f1121)
|
||||
L 7 (#76f2c0)
|
||||
D 4 (#4f9e11)
|
||||
L 3 (#76f2c2)
|
||||
D 8 (#480d31)
|
||||
L 6 (#694740)
|
||||
D 5 (#177e81)
|
||||
L 9 (#692aa2)
|
||||
D 3 (#10b971)
|
||||
R 9 (#42f012)
|
||||
D 3 (#10b973)
|
||||
R 3 (#2c6202)
|
||||
D 8 (#851881)
|
||||
R 3 (#04ae62)
|
||||
D 2 (#470d81)
|
||||
R 4 (#155e10)
|
||||
U 3 (#01b053)
|
||||
R 2 (#c55dd0)
|
||||
U 5 (#01b051)
|
||||
R 9 (#026f30)
|
||||
D 2 (#113081)
|
||||
R 2 (#694742)
|
||||
D 4 (#22d821)
|
||||
L 5 (#03eb80)
|
||||
D 5 (#3bc5d1)
|
||||
L 4 (#69bf90)
|
||||
D 3 (#3fdce3)
|
||||
L 4 (#2d1350)
|
||||
D 2 (#3fdce1)
|
||||
L 3 (#65f500)
|
||||
U 4 (#bd7f81)
|
||||
L 8 (#8382e0)
|
||||
D 4 (#160053)
|
||||
L 7 (#5ff9f0)
|
||||
D 4 (#ab40d3)
|
||||
R 6 (#5ff9f2)
|
||||
D 2 (#58d1b3)
|
||||
R 2 (#6bcc80)
|
||||
D 6 (#b187c3)
|
||||
R 6 (#73b290)
|
||||
D 3 (#9fbf43)
|
||||
R 4 (#630f00)
|
||||
D 2 (#4f1b13)
|
||||
R 7 (#543b30)
|
||||
D 7 (#114c43)
|
||||
R 6 (#629ac0)
|
||||
D 6 (#1bedb3)
|
||||
R 4 (#016f50)
|
||||
D 2 (#285e31)
|
||||
R 3 (#611460)
|
||||
D 7 (#0dfd61)
|
||||
R 2 (#75f3e0)
|
||||
D 2 (#1e79b1)
|
||||
R 4 (#144e90)
|
||||
U 5 (#d16ff1)
|
||||
R 4 (#144e92)
|
||||
U 6 (#113511)
|
||||
R 5 (#610450)
|
||||
U 3 (#1291c1)
|
||||
R 2 (#328eb0)
|
||||
U 5 (#2f3f73)
|
||||
R 9 (#126af2)
|
||||
U 4 (#946843)
|
||||
L 6 (#126af0)
|
||||
U 5 (#866453)
|
||||
L 7 (#352e70)
|
||||
U 4 (#5f8413)
|
||||
L 7 (#c618e2)
|
||||
U 3 (#6c2813)
|
||||
L 2 (#c618e0)
|
||||
U 3 (#1d3db3)
|
||||
R 8 (#37e470)
|
||||
U 2 (#1705b3)
|
||||
R 6 (#6ab412)
|
||||
U 6 (#961873)
|
||||
R 3 (#6ab410)
|
||||
U 8 (#30e6f3)
|
||||
R 5 (#3308e0)
|
||||
U 3 (#1fc8c1)
|
||||
R 3 (#3450a0)
|
||||
D 8 (#9d4391)
|
||||
R 3 (#6a9c70)
|
||||
D 2 (#25d071)
|
||||
R 4 (#3e5330)
|
||||
D 6 (#401381)
|
||||
R 5 (#399052)
|
||||
D 3 (#ab9e81)
|
||||
R 4 (#2622a2)
|
||||
D 4 (#68c4c3)
|
||||
R 4 (#2c5f92)
|
||||
D 3 (#8021d3)
|
||||
R 5 (#75bd02)
|
||||
D 3 (#1885a1)
|
||||
R 3 (#67b420)
|
||||
D 3 (#7df001)
|
||||
R 6 (#67b422)
|
||||
D 2 (#5270f1)
|
||||
R 3 (#2bbed2)
|
||||
D 9 (#863371)
|
||||
L 3 (#45ba70)
|
||||
D 6 (#49f553)
|
||||
L 2 (#693800)
|
||||
D 6 (#49f551)
|
||||
L 7 (#450b90)
|
||||
D 7 (#3b7aa1)
|
||||
R 5 (#399050)
|
||||
D 2 (#0b37f1)
|
||||
R 4 (#5cbff0)
|
||||
U 4 (#573103)
|
||||
R 3 (#3668c0)
|
||||
U 9 (#573101)
|
||||
R 4 (#7d0a50)
|
||||
U 7 (#316341)
|
||||
R 3 (#4cbab0)
|
||||
U 8 (#5c0f21)
|
||||
R 3 (#22b3a2)
|
||||
U 3 (#804941)
|
||||
R 4 (#22b3a0)
|
||||
U 7 (#173641)
|
||||
R 5 (#1b7230)
|
||||
U 3 (#8a0511)
|
||||
R 4 (#1a5f82)
|
||||
D 5 (#52eda1)
|
||||
R 4 (#1a5f80)
|
||||
U 5 (#38db21)
|
||||
R 5 (#2f4720)
|
||||
U 2 (#2a75c1)
|
||||
R 9 (#aa4d40)
|
||||
U 3 (#538141)
|
||||
L 3 (#7ad770)
|
||||
U 5 (#66ec01)
|
||||
L 5 (#53e812)
|
||||
U 3 (#539a81)
|
||||
L 4 (#53e810)
|
||||
U 5 (#413821)
|
||||
L 5 (#618330)
|
||||
D 5 (#a4bf71)
|
||||
L 6 (#56e4b2)
|
||||
U 3 (#acf591)
|
||||
L 2 (#890732)
|
||||
U 8 (#2a62d1)
|
||||
R 4 (#458e22)
|
||||
U 5 (#2ef8e3)
|
||||
R 4 (#273c60)
|
||||
U 4 (#439bc3)
|
||||
R 2 (#273c62)
|
||||
D 4 (#64c3c3)
|
||||
R 5 (#0e0c12)
|
||||
D 5 (#9481d1)
|
||||
R 3 (#5321d2)
|
||||
U 4 (#5d6361)
|
||||
R 7 (#531760)
|
||||
U 7 (#068711)
|
||||
R 7 (#216570)
|
||||
U 7 (#a20e51)
|
||||
L 3 (#216572)
|
||||
D 3 (#46afb1)
|
||||
L 8 (#4e8f70)
|
||||
D 6 (#1261b1)
|
||||
L 5 (#3840e0)
|
||||
U 6 (#7b0901)
|
||||
L 3 (#75cf00)
|
||||
U 3 (#b56e51)
|
||||
L 7 (#43b850)
|
||||
U 3 (#01dfc1)
|
||||
L 6 (#067e40)
|
||||
U 7 (#613913)
|
||||
R 5 (#30ff10)
|
||||
U 7 (#285d33)
|
||||
R 5 (#72e5c0)
|
||||
D 7 (#285d31)
|
||||
R 3 (#3fdcf0)
|
||||
U 6 (#601d03)
|
||||
R 4 (#312812)
|
||||
U 4 (#4ea643)
|
||||
R 6 (#8253e2)
|
||||
D 7 (#4ea641)
|
||||
R 2 (#3045d2)
|
||||
U 7 (#8362b3)
|
||||
R 7 (#631a70)
|
||||
U 4 (#ba56c3)
|
||||
R 6 (#28e520)
|
||||
U 2 (#568a53)
|
||||
R 3 (#c1d452)
|
||||
U 2 (#3e2a33)
|
||||
R 5 (#c1d450)
|
||||
U 5 (#0f6e43)
|
||||
R 4 (#c65ae0)
|
||||
U 3 (#790e83)
|
||||
R 2 (#012b40)
|
||||
U 7 (#2ea6b3)
|
||||
R 4 (#358722)
|
||||
D 2 (#7b3bf3)
|
||||
R 6 (#adbd32)
|
||||
D 4 (#4f7b63)
|
||||
R 5 (#0d26f2)
|
||||
U 5 (#47f363)
|
||||
R 2 (#4c6160)
|
||||
D 5 (#70ff63)
|
||||
R 5 (#284290)
|
||||
D 3 (#231103)
|
||||
L 7 (#540e80)
|
||||
D 2 (#8b51b3)
|
||||
L 5 (#662c40)
|
||||
D 4 (#22e7e3)
|
||||
R 7 (#1d46a0)
|
||||
D 3 (#343a43)
|
||||
L 6 (#4d7d90)
|
||||
D 4 (#31a643)
|
||||
L 10 (#4e6b30)
|
||||
U 4 (#31a641)
|
||||
L 4 (#5abc90)
|
||||
D 3 (#799953)
|
||||
L 4 (#9e4ed0)
|
||||
D 5 (#3b73e3)
|
||||
R 7 (#390760)
|
||||
D 3 (#bd3533)
|
||||
L 7 (#390762)
|
||||
D 5 (#075bd3)
|
||||
L 3 (#1b7350)
|
||||
D 3 (#a01d23)
|
||||
R 4 (#a56752)
|
||||
D 2 (#6a4313)
|
||||
R 5 (#529462)
|
||||
D 4 (#843c43)
|
||||
R 4 (#829482)
|
||||
U 4 (#7914e3)
|
||||
R 3 (#2f0b90)
|
||||
U 7 (#5f3d53)
|
||||
R 6 (#114980)
|
||||
D 7 (#60b7e3)
|
||||
R 4 (#b9b2f0)
|
||||
D 4 (#60b7e1)
|
||||
R 5 (#2143f0)
|
||||
D 3 (#2f86d3)
|
||||
L 7 (#5f4440)
|
||||
D 4 (#366293)
|
||||
L 5 (#5baae0)
|
||||
U 8 (#80a9a3)
|
||||
L 3 (#61f680)
|
||||
D 8 (#80a9a1)
|
||||
L 5 (#8bdce0)
|
||||
U 4 (#46e4d1)
|
||||
L 5 (#120950)
|
||||
D 8 (#7c15b1)
|
||||
L 4 (#641450)
|
||||
D 2 (#047bf1)
|
||||
L 2 (#3b00c0)
|
||||
D 7 (#a18c33)
|
||||
L 3 (#543b70)
|
||||
D 2 (#a18c31)
|
||||
L 7 (#466150)
|
||||
D 4 (#5c3ad1)
|
||||
R 4 (#5caa80)
|
||||
D 2 (#230201)
|
||||
R 6 (#955102)
|
||||
D 6 (#b200c1)
|
||||
R 7 (#955100)
|
||||
D 3 (#1d8ff1)
|
||||
R 3 (#26f9d0)
|
||||
D 8 (#160d71)
|
||||
R 2 (#483920)
|
||||
D 4 (#4577c3)
|
||||
R 8 (#92ef90)
|
||||
D 5 (#a57e83)
|
||||
R 7 (#0715a0)
|
||||
D 3 (#1da9e3)
|
||||
L 2 (#627970)
|
||||
D 6 (#573ee1)
|
||||
L 8 (#006f30)
|
||||
D 4 (#735da1)
|
||||
L 4 (#006f32)
|
||||
D 4 (#266951)
|
||||
R 3 (#9745a0)
|
||||
D 6 (#412bb1)
|
||||
R 7 (#83f8f2)
|
||||
D 2 (#6c4d31)
|
||||
R 4 (#6a7e72)
|
||||
D 3 (#578921)
|
||||
L 7 (#6c5d92)
|
||||
D 2 (#5485c1)
|
||||
L 5 (#300852)
|
||||
D 4 (#cdf091)
|
||||
L 2 (#544dd2)
|
||||
D 3 (#1259f1)
|
||||
L 7 (#882292)
|
||||
D 6 (#03e4b1)
|
||||
R 7 (#cdf192)
|
||||
D 3 (#5f3c41)
|
||||
R 4 (#c836b0)
|
||||
D 5 (#4cfdc1)
|
||||
L 2 (#36a590)
|
||||
D 4 (#244753)
|
||||
L 2 (#73bd60)
|
||||
D 3 (#244751)
|
||||
L 7 (#72cc90)
|
||||
U 4 (#0e0d21)
|
||||
L 5 (#21ce60)
|
||||
D 4 (#523dd1)
|
||||
L 9 (#041252)
|
||||
D 3 (#8cfc81)
|
||||
R 5 (#041250)
|
||||
D 5 (#365031)
|
||||
R 6 (#21ce62)
|
||||
U 5 (#17b3e1)
|
||||
R 5 (#75a900)
|
||||
D 3 (#8d4fe1)
|
||||
R 4 (#75a902)
|
||||
D 3 (#342091)
|
||||
R 5 (#8d5570)
|
||||
D 5 (#a6f9a3)
|
||||
R 5 (#59f560)
|
||||
D 4 (#49ae63)
|
||||
R 5 (#59f562)
|
||||
D 5 (#2dc6c3)
|
||||
R 4 (#8fb550)
|
||||
U 6 (#884bf3)
|
||||
R 3 (#17ea50)
|
||||
U 4 (#560143)
|
||||
R 5 (#623ad0)
|
||||
D 8 (#5dfc41)
|
||||
R 5 (#ca0040)
|
||||
D 2 (#5bc201)
|
||||
R 4 (#ca0042)
|
||||
D 3 (#7008b1)
|
||||
R 7 (#b87530)
|
||||
U 4 (#5e8821)
|
||||
R 4 (#817080)
|
||||
U 7 (#69e951)
|
||||
R 2 (#518e30)
|
||||
U 4 (#0e9831)
|
||||
R 5 (#29ea82)
|
||||
D 4 (#26f041)
|
||||
R 9 (#6a1862)
|
||||
D 4 (#8d3971)
|
||||
L 4 (#6a1860)
|
||||
D 4 (#215e71)
|
||||
L 5 (#29ea80)
|
||||
D 3 (#282e61)
|
||||
R 3 (#bc6172)
|
||||
D 8 (#17c4f1)
|
||||
L 6 (#1abf10)
|
||||
U 5 (#1a15e1)
|
||||
L 3 (#2ed960)
|
||||
D 5 (#24f4f3)
|
||||
L 4 (#9d6b00)
|
||||
D 6 (#24f4f1)
|
||||
L 2 (#704c40)
|
||||
D 4 (#45b0c1)
|
||||
L 5 (#93a182)
|
||||
D 6 (#53b3b1)
|
||||
L 5 (#5f72d2)
|
||||
U 6 (#76a9f1)
|
||||
L 4 (#643b62)
|
||||
D 3 (#3f41f1)
|
||||
L 6 (#691122)
|
||||
D 2 (#606491)
|
||||
L 5 (#4c5b02)
|
||||
D 5 (#6d1fa1)
|
||||
L 2 (#bf6472)
|
||||
D 6 (#6d1fa3)
|
||||
L 6 (#989bb2)
|
||||
U 4 (#606493)
|
||||
L 3 (#348412)
|
||||
U 6 (#9e4561)
|
||||
L 4 (#9b1742)
|
||||
U 8 (#42a901)
|
||||
L 5 (#09f8f2)
|
||||
U 3 (#63a8c3)
|
||||
R 8 (#591640)
|
||||
U 4 (#2dcda3)
|
||||
L 8 (#591642)
|
||||
U 4 (#4f7803)
|
||||
L 2 (#3e5fe2)
|
||||
U 5 (#0b9e93)
|
||||
L 3 (#cae6b2)
|
||||
U 4 (#7399f3)
|
||||
L 7 (#28c482)
|
||||
U 6 (#d2ee83)
|
||||
L 3 (#28c480)
|
||||
U 6 (#2f0423)
|
||||
L 3 (#320f52)
|
||||
U 2 (#5f4ab1)
|
||||
L 4 (#8d6672)
|
||||
U 6 (#b09261)
|
||||
L 6 (#718952)
|
||||
D 8 (#750591)
|
||||
L 4 (#33df82)
|
||||
D 5 (#1052a1)
|
||||
L 4 (#9a90e2)
|
||||
U 6 (#8eb861)
|
||||
L 2 (#0c1e92)
|
||||
U 4 (#53b871)
|
||||
L 4 (#0739f2)
|
||||
U 4 (#76cfb1)
|
||||
L 6 (#9b6922)
|
||||
U 7 (#76cfb3)
|
||||
L 5 (#846eb2)
|
||||
D 4 (#53b873)
|
||||
L 3 (#6b7ae2)
|
||||
D 4 (#59dd21)
|
||||
L 2 (#60b0b2)
|
||||
D 6 (#a53b01)
|
||||
R 5 (#767632)
|
||||
D 4 (#6c6bb1)
|
||||
L 4 (#b3a932)
|
||||
D 3 (#0660a1)
|
||||
L 5 (#12b390)
|
||||
U 4 (#9c9d01)
|
||||
L 4 (#12b392)
|
||||
U 3 (#910691)
|
||||
L 4 (#8dec12)
|
||||
U 6 (#65ba53)
|
||||
L 3 (#1e02b2)
|
||||
U 2 (#b05803)
|
||||
L 2 (#1e02b0)
|
||||
U 8 (#8a5d93)
|
||||
L 2 (#3bea42)
|
||||
U 5 (#032da3)
|
||||
R 8 (#0aabc2)
|
||||
U 3 (#4a0a13)
|
||||
L 8 (#9f1c02)
|
||||
U 4 (#58a0f3)
|
||||
L 3 (#9f1c00)
|
||||
D 3 (#3a2cf3)
|
||||
L 7 (#169b22)
|
||||
D 2 (#004253)
|
||||
L 2 (#841fd2)
|
||||
D 9 (#0b8473)
|
||||
L 4 (#3f85a2)
|
||||
D 6 (#134bd3)
|
||||
L 2 (#17f832)
|
||||
D 5 (#8870f3)
|
||||
L 2 (#87cf62)
|
||||
D 3 (#8b9fa3)
|
||||
L 2 (#6ca082)
|
||||
D 3 (#9a6ea3)
|
||||
L 7 (#60cbc2)
|
||||
D 4 (#9a6ea1)
|
||||
L 2 (#296752)
|
||||
D 3 (#b0d5c3)
|
||||
L 8 (#0e0100)
|
||||
D 5 (#218503)
|
||||
L 6 (#36a620)
|
||||
D 7 (#071463)
|
||||
L 3 (#669dd0)
|
||||
D 3 (#3099a1)
|
||||
L 7 (#385d40)
|
||||
D 5 (#3099a3)
|
||||
L 7 (#3c66b0)
|
||||
D 3 (#8fec33)
|
||||
L 2 (#4ce142)
|
||||
D 4 (#4b7051)
|
||||
L 8 (#55b322)
|
||||
D 3 (#4b7053)
|
||||
L 7 (#38cd62)
|
||||
D 3 (#668b13)
|
||||
L 4 (#36a622)
|
||||
D 2 (#581f83)
|
||||
L 4 (#0e0102)
|
||||
D 7 (#356bd3)
|
||||
L 5 (#3eb472)
|
||||
D 3 (#4ca003)
|
||||
L 3 (#6afe62)
|
||||
D 5 (#4ca001)
|
||||
L 5 (#536dd2)
|
||||
U 8 (#978bb3)
|
||||
L 5 (#6118d2)
|
||||
U 7 (#aec403)
|
||||
14
day18/sample.txt
Normal file
14
day18/sample.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
R 6 (#70c710)
|
||||
D 5 (#0dc571)
|
||||
L 2 (#5713f0)
|
||||
D 2 (#d2c081)
|
||||
R 2 (#59c680)
|
||||
D 2 (#411b91)
|
||||
L 5 (#8ceee2)
|
||||
U 2 (#caa173)
|
||||
L 1 (#1b58a2)
|
||||
U 2 (#caa171)
|
||||
R 2 (#7807d2)
|
||||
U 3 (#a77fa3)
|
||||
L 2 (#015232)
|
||||
U 2 (#7a21e3)
|
||||
Reference in New Issue
Block a user