From 46acbdc81dfe75a83718d075d6e966d8e5eb4001 Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Wed, 5 Dec 2018 02:03:16 -0500 Subject: Solve day 5 part 2 It's slow but whatever. --- 2018/day05.c | 28 ++++++++++++++++++++++++---- 1 file 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 #include -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); } -- cgit 1.4.1