cleanup
[advent21.git] / 11a.c
1 #include <stdio.h>
2
3 void flash(char grid[10][10], int *flashes, int x, int y)
4 {
5 //already flashed or not charged up enough
6 if (grid[y][x] == 0 || grid[y][x] < 10)
7 return;
8 (*flashes)++;
9 grid[y][x] = 0;
10 for (int dy = -1; dy<=1; dy++)
11 for (int dx = -1; dx<=1; dx++)
12 if ( (dx != 0 || dy != 0) &&
13 x+dx >= 0 && x+dx < 10 &&
14 y+dy >= 0 && y+dy < 10) {
15 if (grid[y+dy][x+dx] != 0)
16 grid[y+dy][x+dx]++;
17 flash(grid, flashes, x+dx, y+dy);
18 }
19 }
20
21 int main()
22 {
23 int x = 0, y = 0;
24 int c;
25 char grid[10][10];
26 while( (c = getchar()) != EOF) {
27 if (c == '\n') {
28 y++;
29 x = 0;
30 } else {
31 grid[y][x++] = c-'0';
32 }
33 }
34
35 int flashes = 0;
36 for (int i = 0; i<100; i++) {
37 for (int y = 0; y<10; y++)
38 for (int x = 0; x<10; x++)
39 grid[y][x]++;
40 for (int y = 0; y<10; y++)
41 for (int x = 0; x<10; x++)
42 flash(grid, &flashes, x, y);
43 }
44
45 printf("%d\n", flashes);
46 }