Your instructions here are simple, but the implementation not so much. The goal is to build a maze solver that takes a string as input and returns the (x,y) coordinates of the goal location. The maze is as follows:
00000000000000E00000000000
00011110101010101000000100
00000011111111111111111100
00000010101010101010100000
00011111111110001010100000
000X0000000000000000000000
And the rules for navigating the maze are as follows:
- Every space marked
0
is a wall. you can't move onto or through a wall. - Every space marked
1
is open. You can move to any open space that is above, below, left, or right of your current position. - The space marked
E
is the entrace of the maze and where you start navigating from. - The space marked
X
is the goal of the maze and where you want to navigate to. - The origin block (0, 0) of the maze is in the lower left hand corner
Now, of course, you could just find the coordinates of X
by looking at your map representation.
But that defeats the point of this exercise. In fact, the coordinates are important to know so that
you can test your implementation. The entrance point is at (14, 5) and the goal is at (3, 0).
This exercise works by setting up two
- Two practioners will be chosen. One will be the "driver" who operates the computer and the other a "navigator" who has some say in how the solution is designed
- Every 5 minutes the current "driver" will move to the audience, the current "navigator" will become the "driver" and a member of the audience will be chosen to become the new "navigator"
- The driver and navigator must write write tests before writing code
- Code must be written to satisfy a failing test
- The audience cannot contribute anything until all tests are green
- Once tests are green, the audience can (respectfully!) contribute improvements to the code
- If tests start failing again, the audience must be silent
- You cannot use any modules outside the Elixir and Erlang standard libraries