diff options
author | June McEnroe <june@causal.agency> | 2023-12-11 15:17:51 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2023-12-11 15:17:51 -0500 |
commit | 138b75f536df595b8f5e12a7dced42bed2a165f6 (patch) | |
tree | e623e65ee5540a081abe0bd8b580ae06a00263d4 | |
parent | Solve day 2 part 2 (diff) | |
download | aoc-138b75f536df595b8f5e12a7dced42bed2a165f6.tar.gz aoc-138b75f536df595b8f5e12a7dced42bed2a165f6.zip |
Solve day 3 part 1
Diffstat (limited to '')
-rw-r--r-- | 2023/day03.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/2023/day03.c b/2023/day03.c new file mode 100644 index 0000000..eba3382 --- /dev/null +++ b/2023/day03.c @@ -0,0 +1,24 @@ +#include <ctype.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +int main(void) { + int sum = 0; + char g[150][150]; + int h = 0; + while (gets(g[h++])); + int w = strlen(g[--h-1]); + for (int y = 0; y < h; ++y) + for (int x = 0; x < w; ++x) { + if (g[y][x] == '.' || isdigit(g[y][x])) continue; + 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); + while (isdigit(*p)) *p++ = '.'; + } + } + printf("%d\n", sum); +} |