diff options
author | Adam Spragg <adam@spra.gg> | 2023-01-15 10:34:50 +0000 |
---|---|---|
committer | Adam Spragg <adam@spra.gg> | 2023-01-15 10:34:50 +0000 |
commit | 3dd30be057332cd764ee79a26673a775336322eb (patch) | |
tree | cabb7c293fa2d587a217916b6e519f98e3cd7cb6 /3b.c | |
parent | 2b922997fb893a5bc14f157ad5db27ae77cec6a6 (diff) |
Puzzle 3: Consolidate 3a/3b programs into `3` with `-p` option
Like the later puzzles
Diffstat (limited to '3b.c')
-rw-r--r-- | 3b.c | 87 |
1 files changed, 0 insertions, 87 deletions
@@ -1,87 +0,0 @@ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - - -int -chrcmp(void const * a, void const * b) -{ - return (*(char const *) a) - *((char const *) b); -} - - -int -priority(int c) -{ - if (c >= 'A' && c <= 'Z') - return 27 + c - 'A'; - if (c >= 'a' && c <= 'z') - return 1 + c - 'a'; - fprintf(stderr, "Unexpected priority request: %c\n", c); - return -1; -} - - -int -min(int a, int b) -{ - return a < b ? a : b; -} - - -int -min3(int a, int b, int c) -{ - return min(min(a, b), c); -} - - -int -main() -{ - char buf[3][BUFSIZ]; - int score = 0; - - while (fgets(buf[0], sizeof(buf[0]), stdin) - && fgets(buf[1], sizeof(buf[1]), stdin) - && fgets(buf[2], sizeof(buf[2]), stdin)) - { - int n, i, j, k; - - for (n = 0; n < 3; ++n) { - int len = strlen(buf[n]); - if (len && buf[n][len - 1] == '\n') { - --len; - buf[n][len] = '\0'; - } - if (len % 2 == 1) - fprintf(stderr, "Unexpected length: %d\n", len); - - qsort(buf[n], len, 1, chrcmp); - } - - i = 0; j = 0; k = 0; - while (buf[0][i] != '\0' && buf[1][j] != '\0' && buf[2][k] != '\0') { - int n = min3(buf[0][i], buf[1][j], buf[2][k]); - if (buf[0][i] == n && buf[1][j] == n && buf[2][k] == n) - break; - if (buf[0][i] == n) - ++i; - if (buf[1][j] == n) - ++j; - if (buf[2][k] == n) - ++k; - } - if (buf[0][i] == '\0' || buf[1][j] == '\0' || buf[2][k] == '\0') { - fprintf(stderr, "No match found in %s/%s/%s\n", buf[0], buf[1], buf[2]); - return -1; - } - score += priority(buf[0][i]); - } - - printf("Score: %d\n", score); - - return 0; -} - |