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 /3a.c | |
parent | 2b922997fb893a5bc14f157ad5db27ae77cec6a6 (diff) |
Puzzle 3: Consolidate 3a/3b programs into `3` with `-p` option
Like the later puzzles
Diffstat (limited to '3a.c')
-rw-r--r-- | 3a.c | 65 |
1 files changed, 0 insertions, 65 deletions
@@ -1,65 +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 -main() -{ - char buf[BUFSIZ]; - int score = 0; - - while (fgets(buf, sizeof(buf), stdin)) { - int len, i, j; - - len = strlen(buf); - if (len && buf[len - 1] == '\n') - --len; - if (len % 2 == 1) - fprintf(stderr, "Unexpected length: %d\n", len); - - qsort(buf, len / 2, 1, chrcmp); - qsort(buf + len / 2, len / 2, 1, chrcmp); - - i = 0; - j = len / 2; - while (i < len / 2 && j < len) { - if (buf[i] < buf[j]) - ++i; - else if (buf[j] < buf[i]) - ++j; - else - break; - } - if (i >= len / 2 || j >= len) { - fprintf(stderr, "No match found in %s\n", buf); - return -1; - } - score += priority(buf[i]); - } - - printf("Score: %d\n", score); - - return 0; -} - |