Compare commits

..

2 Commits

Author SHA1 Message Date
55b25e6b64 day 7 2024-12-07 01:28:17 -06:00
c1c400b0d7 day 6 2024-12-07 00:17:31 -06:00
3 changed files with 26 additions and 26 deletions

View File

@ -184,26 +184,34 @@ 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;
unsigned char c = day6_state.visited[ix];
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 i = 0; i < 4; i++) {
if (c & (1 << i)) {
arrow(x,
y,
i,
0xff'005555);
for (int i = 0; i < 4; i++) {
if (c & (1 << i)) {
arrow(x,
y,
i,
0xff'222222);
}
}
}
}
}
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,8 +118,7 @@ void state_init(int part,
int stride,
int width,
int height,
unsigned char * visited,
struct guard * guard)
unsigned char * visited)
{
day6_state.part = part;
day6_state.input = input;
@ -127,7 +126,6 @@ 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)
@ -143,14 +141,8 @@ 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, &guard);
state_init(1, input, stride, width, height, visited);
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)
@ -219,7 +211,7 @@ int64_t day6_part2(const char * input, int length)
guard.facing = UP;
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];
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;
};