59 lines
1.7 KiB
Markdown
59 lines
1.7 KiB
Markdown
# Mars Rover Backend Kata
|
|
|
|
Welcome. This kata consist in a solution that translates commands sent from Earth to instructions that are understood by a Rover on Mars
|
|
|
|
### Functional requirements
|
|
```
|
|
Given:
|
|
- a two dimensional map of Mars
|
|
- the initial starting point and direction of the Rover
|
|
|
|
When:
|
|
- a command is received
|
|
move `forward` or `backward` or rotate `left` or `right` (90 degrees)
|
|
|
|
Then:
|
|
- move the Rover
|
|
if the Rover disappears over the edge of the map (the horizon), continue on the other side (remember, Mars is a sphere)
|
|
```
|
|
|
|
#### Bonus point
|
|
|
|
After ensuring that the functional requirements have been met, as a bonus point (not necessary but more than welcome), add a new feature:
|
|
```
|
|
Given:
|
|
- a list of obstacles with their exact location
|
|
|
|
When:
|
|
- Rover moves
|
|
|
|
And:
|
|
- Rover encounters an obstacle
|
|
|
|
Then:
|
|
- report back the obstacle. The Rover should stay in its previous position
|
|
```
|
|
|
|
## Your solution
|
|
|
|
### Must (These points are mandatory)
|
|
|
|
- Fulfill the [Functional Requirements](#functional-requirements) stated in this readme
|
|
- Be testable. In a way that let checking that everything is working without execute the main app
|
|
- Be self compiled
|
|
- Be self executable
|
|
|
|
### Should (Nice to have)
|
|
|
|
- Fulfill the [Bonus point](#bonus-point) section of this readme
|
|
- Be bug free
|
|
- Use any design patterns you know and feel that help solve this problem
|
|
- Be extensible to allow the introduction of new features in an easy way
|
|
- Use any package dependency mechanism
|
|
- Have a SOLUTION.md containing all the relevant features of the provided solution
|
|
|
|
## Evaluation
|
|
|
|
- The design and code over the usage of frameworks and libraries
|
|
- The evolution of the solution, not just the delivered code
|
|
- The easibility of extending the solution with feasible features |