From 0f9839ef4920f50836cbc8330fed2f52fdf5fc92 Mon Sep 17 00:00:00 2001 From: icaema Date: Sat, 2 Dec 2023 23:05:37 -0500 Subject: [PATCH] Used sscanf to simplify code Instead of manually parsing out the game_id and raw_hand manually, use sscanf --- day-02/Makefile | 2 ++ day-02/bin/part01 | Bin 16280 -> 16280 bytes day-02/bin/part02 | Bin 20408 -> 16312 bytes day-02/src/part01.c | 24 ++++++++---------------- day-02/src/part02.c | 27 +++++++++------------------ 5 files changed, 19 insertions(+), 34 deletions(-) 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 65faca6687a9e993ee9f3e848d2f02f7b8941c25..604abd9717aa9ad7ae56fb11112be61dd20bc617 100755 GIT binary patch delta 2837 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 BcuxQT diff --git a/day-02/bin/part02 b/day-02/bin/part02 index 03321c965bcdb46f8be15d607ca66805602a82c2..080e0fff48c34fd1689aff1305253c566d0676a0 100755 GIT binary patch delta 4599 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 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