From 8026395b987f440486e215f77e402eafc94160f0 Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Tue, 3 Dec 2024 16:14:38 +0900 Subject: [aoc/2024] Finish day 3 --- aoc/2024/03/part-one.c | 11 +++++++++++ aoc/2024/03/part-two.c | 27 +++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 aoc/2024/03/part-one.c create mode 100644 aoc/2024/03/part-two.c diff --git a/aoc/2024/03/part-one.c b/aoc/2024/03/part-one.c new file mode 100644 index 0000000..0438304 --- /dev/null +++ b/aoc/2024/03/part-one.c @@ -0,0 +1,11 @@ +#include + +int main() +{ + size_t x, y, s = 0; + while (scanf("%*[^m]") != EOF) + if (scanf("mul(%3zu,%3zu", &x, &y) == 2 && getchar() == ')') + s += x * y; + printf("%zu\n", s); + return 0; +} diff --git a/aoc/2024/03/part-two.c b/aoc/2024/03/part-two.c new file mode 100644 index 0000000..4ae337f --- /dev/null +++ b/aoc/2024/03/part-two.c @@ -0,0 +1,27 @@ +#include +#include + +int main() +{ + bool d = true; + size_t x, y, s = 0; + while (scanf("%*[^dm]") != EOF) { + if (getchar() == 'd') { + int c; +#define unless(i) if ((c = getchar()) != i && ungetc(c, stdin) == c) + unless ('o') continue; + unless ('(') { + if (scanf("n't()") != EOF) + d = false; + continue; + } + unless (')') continue; +#undef unless + d = true; + } + if (scanf("ul(%3zu,%3zu", &x, &y) == 2 && getchar() == ')' && d) + s += x * y; + } + printf("%zu\n", s); + return 0; +} -- cgit 1.4.1