From b2a7be43ea69a23988620d32520306195323504c Mon Sep 17 00:00:00 2001 From: Mia Herkt Date: Sat, 3 Dec 2022 19:03:40 +0100 Subject: [PATCH] 03: Solve in C --- 03/input | 2 +- 03/solution.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 03/solution.c diff --git a/03/input b/03/input index 4d8bedb..712656e 100644 --- a/03/input +++ b/03/input @@ -297,4 +297,4 @@ HqSJchHTHbTgHhGhvmRzFmnFtzRF RJqHTpgDLJDSqLJJPNVjsfPwBVsVLlfN NDrBlSmrFBlbbJllmtHHwhNNhZztqHVRzQ CMTCGLcvvtfCdCcCvCnMTMcTzjHwVZVRLjRRjQjRHRwzwjVH -dfGdgGMGPggnvfvgbtDtlSJPDSFJPslJ \ No newline at end of file +dfGdgGMGPggnvfvgbtDtlSJPDSFJPslJ diff --git a/03/solution.c b/03/solution.c new file mode 100644 index 0000000..08ef860 --- /dev/null +++ b/03/solution.c @@ -0,0 +1,32 @@ +#include +#include + +#define P(c) (c < 97 ? c - 38 : c - 96) + +int main(void) { + char l[128]; + int e = 0, i, n, S = 0, G = 0, g[53] = {0}; + + while (fgets(l, 128, stdin)) { + n = strlen(l) - 1; + + int s[53] = {0}; + for (i = 0; i < n / 2; i++) s[P(l[i])] = 1; + for (i = n / 2; i < n; i++) s[P(l[i])] *= 2; + for (i = 1; i < 53; i++) if (s[i] > 1) S += i; + + if (!(e % 3)) + for (i = 0; i < n; i++) g[P(l[i])] = 1; + else { + for (i = 0; i < n; i++) g[P(l[i])] *= 2; + for (i = 1; i < 53; i++) g[i] = g[i] > 1; + } + + if (!(++e % 3)) { + for (i = 1; i < 53; i++) if (g[i]) G += i; + memset(g, 0, 53 * sizeof(int)); + } + } + + printf("Silver: %d\nGold: %d\n", S, G); +}