12 int main(int argc
, char **argv
)
16 seed
= atoi (argv
[1]);
18 for (i
= 0; i
< MAX
; i
++)
19 for (j
= 0; j
< MAX
; j
++)
20 grid
[i
][j
] = (~__builtin_popcount (j
*j
+ 3*j
+ 2*i
*j
+ i
+ i
*i
28 for (i
= 0; i
< MAX
; i
++)
29 for (j
= 0; j
< MAX
; j
++)
30 if (grid
[i
][j
] == gen
) {
31 if (i
&& !grid
[i
- 1][j
]) {
35 grid
[i
- 1][j
] = gen
+ 1;
37 if (i
+ 1 < MAX
&& !grid
[i
+ 1][j
]) {
41 grid
[i
+ 1][j
] = gen
+ 1;
43 if (j
&& !grid
[i
][j
- 1]) {
47 grid
[i
][j
- 1] = gen
+ 1;
49 if (j
+ 1 < MAX
&& !grid
[i
][j
+ 1]) {
53 grid
[i
][j
+ 1] = gen
+ 1;
59 for (i
= 0; i
< MAX
; i
++) {
60 for (j
= 0; j
< MAX
; j
++)
61 putchar (grid
[i
][j
] > 0 ? 'O' : grid
[i
][j
] ? '#' : '.');
64 printf ("steps to x=31,y=39 is %d\n", grid
[39][31] - 1);
65 printf ("%d places reachable within 50 steps\n", set
);