diff options
-rw-r--r-- | 2018/day05.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/2018/day05.c b/2018/day05.c index 5cb9366..1a80e2a 100644 --- a/2018/day05.c +++ b/2018/day05.c @@ -3,9 +3,7 @@ #include <stdlib.h> #include <string.h> -int main() { - char buf[50000]; - size_t len = fread(buf, 1, sizeof(buf), stdin); +static size_t react(char *buf, size_t len) { for (size_t i = 0; i < len - 1; ++i) { if (tolower(buf[i]) != tolower(buf[i + 1])) continue; if (islower(buf[i]) == islower(buf[i + 1])) continue; @@ -13,5 +11,27 @@ int main() { memmove(&buf[i], &buf[i + 2], len - i); i = (size_t)-1; } - printf("%zu\n", len); + return len; +} + +int main() { + char buf[50000]; + size_t len = fread(buf, 1, sizeof(buf), stdin); + + char buf1[50000]; + memcpy(buf1, buf, len); + printf("%zu\n", react(buf1, len)); + + size_t min = len; + for (char x = 'a'; x <= 'z'; ++x) { + char buf2[50000]; + size_t len2 = 0; + for (size_t i = 0; i < len; ++i) { + if (tolower(buf[i]) == x) continue; + buf2[len2++] = buf[i]; + } + len2 = react(buf2, len2); + if (len2 < min) min = len2; + } + printf("%zu\n", min); } |