9 #define MAX 202 // cheat by pre-inspecting input with wc
10 char grid
[MAX
][MAX
+ 1];
20 main (int argc
, char **argv
)
23 char out
[11]; // cheat by pre-inspecting 'tr -d -c A-Z < day19.input'
25 while (fgets (grid
[rows
], MAX
+ 1, stdin
) && grid
[rows
][0])
27 int width
= strchr (grid
[0], '\n') - grid
[0];
28 printf ("read %d rows, width %d\n", rows
, width
);
31 c
= strchr (grid
[0], '|') - grid
[0];
36 printf ("at grid[%d][%d]='%c', direction %d\n", r
, c
, grid
[r
][c
], d
);
38 if (isalpha (grid
[r
][c
]))
42 if (r
&& grid
[r
- 1][c
] != ' ')
44 else if (c
< width
- 1 && grid
[r
][c
+ 1] != ' ') {
47 } else if (c
&& grid
[r
][c
- 1] != ' ') {
54 if (r
< rows
- 1 && grid
[r
+ 1][c
] != ' ')
56 else if (c
< width
- 1 && grid
[r
][c
+ 1] != ' ') {
59 } else if (c
&& grid
[r
][c
- 1] != ' ') {
66 if (c
&& grid
[r
][c
- 1] != ' ')
68 else if (r
< rows
- 1 && grid
[r
+ 1][c
] != ' ') {
71 } else if (r
&& grid
[r
- 1][c
] != ' ') {
78 if (c
< width
- 1 && grid
[r
][c
+ 1] != ' ')
80 else if (r
< rows
- 1 && grid
[r
+ 1][c
] != ' ') {
83 } else if (r
&& grid
[r
- 1][c
] != ' ') {
91 printf ("encountered %s after %d steps\n", out
, steps
);