diff options
author | June McEnroe <june@causal.agency> | 2023-12-11 15:20:48 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2023-12-11 15:20:48 -0500 |
commit | f04576aad35430242082f27f8baf55055acb2e5a (patch) | |
tree | 2712b585b094f7fb86fab20207bc8c805dbd86cc | |
parent | Solve day 3 part 1 (diff) | |
download | aoc-f04576aad35430242082f27f8baf55055acb2e5a.tar.gz aoc-f04576aad35430242082f27f8baf55055acb2e5a.zip |
Solve day 3 part 2
-rw-r--r-- | 2023/day03.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/2023/day03.c b/2023/day03.c index eba3382..4b91695 100644 --- a/2023/day03.c +++ b/2023/day03.c @@ -3,7 +3,7 @@ #include <stdlib.h> #include <string.h> int main(void) { - int sum = 0; + int sum = 0, sum2 = 0; char g[150][150]; int h = 0; while (gets(g[h++])); @@ -11,14 +11,19 @@ int main(void) { for (int y = 0; y < h; ++y) for (int x = 0; x < w; ++x) { if (g[y][x] == '.' || isdigit(g[y][x])) continue; + int n = 0, r = 1; for (int i = -1; i <= +1; ++i) for (int j = -1; j <= +1; ++j) { char *p = &g[y+i][x+j]; if (!isdigit(*p)) continue; while (p > g[y+i] && isdigit(p[-1])) p--; sum += atoi(p); + r *= atoi(p); + n++; while (isdigit(*p)) *p++ = '.'; } + if (n == 2) sum2 += r; } printf("%d\n", sum); + printf("%d\n", sum2); } |