From 44ad339f8f8e8b578b151938c4abf080678b30bb Mon Sep 17 00:00:00 2001 From: June McEnroe Date: Thu, 9 Dec 2021 12:42:38 -0500 Subject: Solve day 9 part 1 --- 2021/day09.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 2021/day09.c (limited to '2021/day09.c') diff --git a/2021/day09.c b/2021/day09.c new file mode 100644 index 0000000..44c20a1 --- /dev/null +++ b/2021/day09.c @@ -0,0 +1,34 @@ +#include +#include +static int h, w; +static int grid[128][128]; +static int adj(int *a, int y, int x) { + int n = 0; + if (y > 0) a[n++] = grid[y-1][x]; + if (y < h-1) a[n++] = grid[y+1][x]; + if (x > 0) a[n++] = grid[y][x-1]; + if (x < w-1) a[n++] = grid[y][x+1]; + return n; +} +int main(void) { + size_t cap = 0; + char *buf = NULL; + while (0 < getline(&buf, &cap, stdin)) { + for (w = 0; buf[w] && buf[w] != '\n'; ++w) { + grid[h][w] = buf[w] - '0'; + } + h++; + } + int risk = 0; + for (int y = 0; y < h; ++y) + for (int x = 0; x < w; ++x) { + int a[4]; + int n = adj(a, y, x); + int m = 0; + for (int i = 0; i < n; ++i) { + if (a[i] <= grid[y][x]) m |= 1; + } + if (!m) risk += 1 + grid[y][x]; + } + printf("%d\n", risk); +} -- cgit 1.4.1