Compare commits

..

2 Commits

Author SHA1 Message Date
e8010222bd day 7 2024-12-07 01:58:08 -06:00
0e83033a4a day 6 2024-12-07 01:58:05 -06:00
3 changed files with 26 additions and 26 deletions

View File

@ -184,8 +184,7 @@ void day6_render(const struct font * font,
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;
@ -196,22 +195,15 @@ void day6_render(const struct font * font,
arrow(x,
y,
i,
0xff'222222);
}
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,
day6_state.guard[0].position.y,
day6_state.guard[0].facing,
arrow(day6_state.guard[0]->position.x,
day6_state.guard[0]->position.y,
day6_state.guard[0]->facing,
base_color[0]);
// render text

View File

@ -118,7 +118,8 @@ void state_init(int part,
int stride,
int width,
int height,
unsigned char * visited)
unsigned char * visited,
struct guard * guard)
{
day6_state.part = part;
day6_state.input = input;
@ -126,6 +127,7 @@ void state_init(int part,
day6_state.width = width;
day6_state.height = height;
day6_state.visited = visited;
day6_state.guard[0] = guard;
}
int64_t day6_part1(const char * input, int length)
@ -141,8 +143,14 @@ int64_t day6_part1(const char * input, int length)
guard.facing = UP;
guard.position = find_guard(input, length, stride);
state_init(1, input, stride, width, height, visited);
state_init(1, input, stride, width, height, visited, &guard);
while (true) {
/*
if (!day6_state.step)
continue;
day6_state.step = false;
*/
bool guard_inside_map = position_inside_map(width, height,
guard.position.x, guard.position.y);
if (!guard_inside_map)
@ -211,7 +219,7 @@ int64_t day6_part2(const char * input, int length)
guard.facing = UP;
guard.position = origin;
state_init(2, input, stride, width, height, visited);
state_init(2, input, stride, width, height, visited, &guard);
unsigned char obstacles[height * width];
for (int i = 0; i < width * height; i++) obstacles[i] = 0;

View File

@ -30,7 +30,7 @@ struct solution_state {
int stride;
int width;
int height;
struct guard guard[2];
struct guard * guard[2];
unsigned char * visited;
};