diff --git a/day-02/Makefile b/day-02/Makefile index 4ffd562..87c12c3 100644 --- a/day-02/Makefile +++ b/day-02/Makefile @@ -12,9 +12,11 @@ run2: clean bin/part02 test1: clean bin/part01 cat data/p01test.txt | bin/part01 + @echo "8 is correct answer" test2: clean bin/part02 cat data/p02test.txt | bin/part02 + @echo "2286 is correct answer" bin/part01: $(CC) src/part01.c -o bin/part01 diff --git a/day-02/bin/part01 b/day-02/bin/part01 index 65faca6..604abd9 100755 Binary files a/day-02/bin/part01 and b/day-02/bin/part01 differ diff --git a/day-02/bin/part02 b/day-02/bin/part02 index 03321c9..080e0ff 100755 Binary files a/day-02/bin/part02 and b/day-02/bin/part02 differ diff --git a/day-02/src/part01.c b/day-02/src/part01.c index 9c01b82..4a6188d 100644 --- a/day-02/src/part01.c +++ b/day-02/src/part01.c @@ -66,30 +66,21 @@ int main(int argc, char *argv[]){ while (fgets(line, LINE_MAX, stdin) != NULL) { int game_id; + char *raw_hand; //debug_printf("raw line: %s\n", line); - char id_buf[4]; - int colon_index = (int)(strchr(line, ':') - line); - strncpy(id_buf, &line[5], colon_index-5); - game_id = atoi(id_buf); - //debug_printf("id_buf: -%s- game_id: %d\n", id_buf, game_id); + sscanf(line, "Game %d: %m[0-9a-z,; ]\n", &game_id, &raw_hand); gameArray[linesProcessed] = (Game){game_id, 0, {(Hand){0,0,0,0}}, (Hand){0,0,0,0}, 1}; - - char raw_hand_buffer[LINE_MAX]; //make a buffer to hold the rest of the game info for parsing later - memset(raw_hand_buffer, '\0', sizeof(raw_hand_buffer)); - int end_index = (int)(strchr(line, '\n') - line); //debug_printf("endIndex: %d\n", end_index); - strncpy(raw_hand_buffer, &line[colon_index+2], end_index-(colon_index+2)); - //debug_printf("game_id: %d; raw_hand_buffer: ~~%s~~\n", game_id, raw_hand_buffer); - debug_printf("Reconstruct: ~~Game %d: %s~~\n", game_id, raw_hand_buffer); + debug_printf("Reconstruct: ~~Game %d: %s~~\n", game_id, raw_hand); int hand_index = 0; char count_buf[10] = ""; memset(count_buf, '\0', sizeof(count_buf)); - for (int i = 0; i<=strlen(raw_hand_buffer); i++){ - char current_char = raw_hand_buffer[i]; - //debug_printf("i: %d.%d, hand_index: %d; count_buf:~%s~; current_char: %c\n", i, strlen(raw_hand_buffer), hand_index, count_buf, current_char); - if (current_char == ';' || i == strlen(raw_hand_buffer)){ + for (int i = 0; i<=strlen(raw_hand); i++){ + char current_char = raw_hand[i]; + //debug_printf("i: %d.%d, hand_index: %d; count_buf:~%s~; current_char: %c\n", i, strlen(raw_hand), hand_index, count_buf, current_char); + if (current_char == ';' || i == strlen(raw_hand)){ memset(count_buf, '\0', sizeof(count_buf)); gameArray[linesProcessed].hands[hand_index].set = 1; gameArray[linesProcessed].num_hands = hand_index+1; @@ -112,6 +103,7 @@ int main(int argc, char *argv[]){ memset(count_buf, '\0', sizeof(count_buf)); } } + free(raw_hand); linesProcessed++; } printf("\n Ingested %d Lines\n", linesProcessed); diff --git a/day-02/src/part02.c b/day-02/src/part02.c index 0bd349a..b975f9c 100644 --- a/day-02/src/part02.c +++ b/day-02/src/part02.c @@ -80,30 +80,21 @@ int main(int argc, char *argv[]){ while (fgets(line, LINE_MAX, stdin) != NULL) { int game_id; + char *raw_hand; //debug_printf("raw line: %s\n", line); - char id_buf[4]; - int colon_index = (int)(strchr(line, ':') - line); - strncpy(id_buf, &line[5], colon_index-5); - game_id = atoi(id_buf); - //debug_printf("id_buf: -%s- game_id: %d\n", id_buf, game_id); + sscanf(line, "Game %d: %m[0-9a-z,; ]\n", &game_id, &raw_hand); gameArray[linesProcessed] = (Game){game_id, 0, {(Hand){0,0,0,0}}, (Hand){0,0,0,0}, 1}; - - char raw_hand_buffer[LINE_MAX]; //make a buffer to hold the rest of the game info for parsing later - memset(raw_hand_buffer, '\0', sizeof(raw_hand_buffer)); - int end_index = (int)(strchr(line, '\n') - line); //debug_printf("endIndex: %d\n", end_index); - strncpy(raw_hand_buffer, &line[colon_index+2], end_index-(colon_index+2)); - //debug_printf("game_id: %d; raw_hand_buffer: ~~%s~~\n", game_id, raw_hand_buffer); - debug_printf("Reconstruct: ~~Game %d: %s~~\n", game_id, raw_hand_buffer); + debug_printf("Reconstruct: ~~Game %d: %s~~\n", game_id, raw_hand); int hand_index = 0; char count_buf[10] = ""; memset(count_buf, '\0', sizeof(count_buf)); - for (int i = 0; i<=strlen(raw_hand_buffer); i++){ - char current_char = raw_hand_buffer[i]; - //debug_printf("i: %d.%d, hand_index: %d; count_buf:~%s~; current_char: %c\n", i, strlen(raw_hand_buffer), hand_index, count_buf, current_char); - if (current_char == ';' || i == strlen(raw_hand_buffer)){ + for (int i = 0; i<=strlen(raw_hand); i++){ + char current_char = raw_hand[i]; + //debug_printf("i: %d.%d, hand_index: %d; count_buf:~%s~; current_char: %c\n", i, strlen(raw_hand), hand_index, count_buf, current_char); + if (current_char == ';' || i == strlen(raw_hand)){ memset(count_buf, '\0', sizeof(count_buf)); gameArray[linesProcessed].hands[hand_index].set = 1; gameArray[linesProcessed].num_hands = hand_index+1; @@ -126,6 +117,7 @@ int main(int argc, char *argv[]){ memset(count_buf, '\0', sizeof(count_buf)); } } + free(raw_hand); linesProcessed++; } printf("\n Ingested %d Lines\n", linesProcessed); @@ -160,5 +152,4 @@ int main(int argc, char *argv[]){ printf("sum_of_valid_games: \n%d\n", sum_of_valid_games); printf("sum_of_powers_of_min_cubes: \n%d\n", sum_of_powers_of_min_cubes); -} - +} \ No newline at end of file