c 2022 3 part 2

This commit is contained in:
Bill Rossi 2024-11-30 15:24:17 -05:00
parent 8cc394d67c
commit 771c0e0256
2 changed files with 39 additions and 1 deletions

View File

@ -63,6 +63,20 @@ int priority(char *line) {
return 0;
}
int three_line_priority(char *one, char *two, char *three) {
Compartment c1 = fill_compartment(one);
Compartment c2 = fill_compartment(two);
Compartment c3 = fill_compartment(three);
for (int i = 0; i < 52; i++) {
if (c1.contents[i] && c2.contents[i] && c3.contents[i]) {
return i + 1;
}
}
return 0;
}
int main() {
char *line;
@ -71,7 +85,20 @@ int main() {
sum += priority(line);
}
aoc_reset_read_line();
int three_line_sum = 0;
char *line_1, *line_2, *line_3;
while (
(line_1 = aoc_read_line()) != NULL &&
(line_2 = aoc_read_line()) != NULL &&
(line_3 = aoc_read_line()) != NULL
) {
three_line_sum += three_line_priority(line_1, line_2, line_3);
}
printf("Part 1: %d\n", sum);
printf("Part 2: %d\n", three_line_sum);
aoc_free();
return 0;

View File

@ -23,12 +23,17 @@ char *aoc_read_input(void) {
return input_buffer;
}
char *read_line_buffer = NULL;
char *seek = NULL;
char *aoc_read_line(void) {
if (input_buffer == NULL) aoc_read_input();
if (read_line_buffer == NULL) {
read_line_buffer = malloc(strlen(input_buffer) + 1);
strcpy(read_line_buffer, input_buffer);
}
if (seek == NULL) seek = input_buffer;
if (seek == NULL) seek = read_line_buffer;
char *line_break = strstr(seek, "\n");
if (line_break == NULL) return NULL;
@ -39,6 +44,12 @@ char *aoc_read_line(void) {
return token;
}
void aoc_reset_read_line(void) {
strcpy(read_line_buffer, input_buffer);
seek = NULL;
}
void aoc_free(void) {
free(input_buffer);
free(read_line_buffer);
}