Compare commits
2 Commits
e8010222bd
...
55b25e6b64
Author | SHA1 | Date | |
---|---|---|---|
55b25e6b64 | |||
c1c400b0d7 |
@ -184,26 +184,34 @@ void day6_render(const struct font * font,
|
|||||||
0xff'ff0000,
|
0xff'ff0000,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (day6_state.part == 2) {
|
||||||
|
if (day6_state.visited != NULL) {
|
||||||
|
for (int y = 0; y < day6_state.height; y++) {
|
||||||
|
for (int x = 0; x < day6_state.width; x++) {
|
||||||
|
int ix = y * day6_state.width + x;
|
||||||
|
unsigned char c = day6_state.visited[ix];
|
||||||
|
|
||||||
for (int y = 0; y < day6_state.height; y++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
for (int x = 0; x < day6_state.width; x++) {
|
if (c & (1 << i)) {
|
||||||
int ix = y * day6_state.width + x;
|
arrow(x,
|
||||||
unsigned char c = day6_state.visited[ix];
|
y,
|
||||||
|
i,
|
||||||
for (int i = 0; i < 4; i++) {
|
0xff'222222);
|
||||||
if (c & (1 << i)) {
|
}
|
||||||
arrow(x,
|
}
|
||||||
y,
|
|
||||||
i,
|
|
||||||
0xff'005555);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
arrow(day6_state.guard[1].position.x,
|
||||||
|
day6_state.guard[1].position.y,
|
||||||
|
day6_state.guard[1].facing,
|
||||||
|
base_color[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
arrow(day6_state.guard[0]->position.x,
|
arrow(day6_state.guard[0].position.x,
|
||||||
day6_state.guard[0]->position.y,
|
day6_state.guard[0].position.y,
|
||||||
day6_state.guard[0]->facing,
|
day6_state.guard[0].facing,
|
||||||
base_color[0]);
|
base_color[0]);
|
||||||
|
|
||||||
// render text
|
// render text
|
||||||
|
@ -118,8 +118,7 @@ void state_init(int part,
|
|||||||
int stride,
|
int stride,
|
||||||
int width,
|
int width,
|
||||||
int height,
|
int height,
|
||||||
unsigned char * visited,
|
unsigned char * visited)
|
||||||
struct guard * guard)
|
|
||||||
{
|
{
|
||||||
day6_state.part = part;
|
day6_state.part = part;
|
||||||
day6_state.input = input;
|
day6_state.input = input;
|
||||||
@ -127,7 +126,6 @@ void state_init(int part,
|
|||||||
day6_state.width = width;
|
day6_state.width = width;
|
||||||
day6_state.height = height;
|
day6_state.height = height;
|
||||||
day6_state.visited = visited;
|
day6_state.visited = visited;
|
||||||
day6_state.guard[0] = guard;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t day6_part1(const char * input, int length)
|
int64_t day6_part1(const char * input, int length)
|
||||||
@ -143,14 +141,8 @@ int64_t day6_part1(const char * input, int length)
|
|||||||
guard.facing = UP;
|
guard.facing = UP;
|
||||||
guard.position = find_guard(input, length, stride);
|
guard.position = find_guard(input, length, stride);
|
||||||
|
|
||||||
state_init(1, input, stride, width, height, visited, &guard);
|
state_init(1, input, stride, width, height, visited);
|
||||||
while (true) {
|
while (true) {
|
||||||
/*
|
|
||||||
if (!day6_state.step)
|
|
||||||
continue;
|
|
||||||
day6_state.step = false;
|
|
||||||
*/
|
|
||||||
|
|
||||||
bool guard_inside_map = position_inside_map(width, height,
|
bool guard_inside_map = position_inside_map(width, height,
|
||||||
guard.position.x, guard.position.y);
|
guard.position.x, guard.position.y);
|
||||||
if (!guard_inside_map)
|
if (!guard_inside_map)
|
||||||
@ -219,7 +211,7 @@ int64_t day6_part2(const char * input, int length)
|
|||||||
guard.facing = UP;
|
guard.facing = UP;
|
||||||
guard.position = origin;
|
guard.position = origin;
|
||||||
|
|
||||||
state_init(2, input, stride, width, height, visited, &guard);
|
state_init(2, input, stride, width, height, visited);
|
||||||
|
|
||||||
unsigned char obstacles[height * width];
|
unsigned char obstacles[height * width];
|
||||||
for (int i = 0; i < width * height; i++) obstacles[i] = 0;
|
for (int i = 0; i < width * height; i++) obstacles[i] = 0;
|
||||||
|
@ -30,7 +30,7 @@ struct solution_state {
|
|||||||
int stride;
|
int stride;
|
||||||
int width;
|
int width;
|
||||||
int height;
|
int height;
|
||||||
struct guard * guard[2];
|
struct guard guard[2];
|
||||||
unsigned char * visited;
|
unsigned char * visited;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user