%  X 0 1 2 3 4 5 6 7 8 9
% Y+--------------------+
% 0|E*WW      WW      WW|
% 1| +    WW      WW    |
% 2| +WW      WW      WW|
% 3| +    WW      WW    |
% 4| +WW      WW      WW|
% 5| + + +WW      WW    |
% 6|  WW + + +WW      WW|
% 7|      WW + + +WW    |
% 8|  WW      WW + + +WW|
% 9|      WW      WW +X!|
%  +--------------------+
% Path length is 18

shortest_path(18).

square(0, 0, entrance).
square(2, 0, unknown).
square(3, 0, unknown).
square(4, 0, unknown).
square(6, 0, unknown).
square(7, 0, unknown).
square(8, 0, unknown).
square(0, 1, unknown).
square(1, 1, unknown).
square(2, 1, unknown).
square(4, 1, unknown).
square(5, 1, unknown).
square(6, 1, unknown).
square(8, 1, unknown).
square(9, 1, unknown).
square(0, 2, unknown).
square(2, 2, unknown).
square(3, 2, unknown).
square(4, 2, unknown).
square(6, 2, unknown).
square(7, 2, unknown).
square(8, 2, unknown).
square(0, 3, unknown).
square(1, 3, unknown).
square(2, 3, unknown).
square(4, 3, unknown).
square(5, 3, unknown).
square(6, 3, unknown).
square(8, 3, unknown).
square(9, 3, unknown).
square(0, 4, unknown).
square(2, 4, unknown).
square(3, 4, unknown).
square(4, 4, unknown).
square(6, 4, unknown).
square(7, 4, unknown).
square(8, 4, unknown).
square(0, 5, unknown).
square(1, 5, unknown).
square(2, 5, unknown).
square(4, 5, unknown).
square(5, 5, unknown).
square(6, 5, unknown).
square(8, 5, unknown).
square(9, 5, unknown).
square(0, 6, unknown).
square(2, 6, unknown).
square(3, 6, unknown).
square(4, 6, unknown).
square(6, 6, unknown).
square(7, 6, unknown).
square(8, 6, unknown).
square(0, 7, unknown).
square(1, 7, unknown).
square(2, 7, unknown).
square(4, 7, unknown).
square(5, 7, unknown).
square(6, 7, unknown).
square(8, 7, unknown).
square(9, 7, unknown).
square(0, 8, unknown).
square(2, 8, unknown).
square(3, 8, unknown).
square(4, 8, unknown).
square(6, 8, unknown).
square(7, 8, unknown).
square(8, 8, unknown).
square(0, 9, unknown).
square(1, 9, unknown).
square(2, 9, unknown).
square(4, 9, unknown).
square(5, 9, unknown).
square(6, 9, unknown).
square(8, 9, unknown).
square(9, 9, exit).
