64 lines
2.1 KiB
Markdown
64 lines
2.1 KiB
Markdown
# Mars Rover Backend Kata
|
|
|
|
Welcome. We need a solution that translates commands sent from Earth to instructions that are understood by our 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.
|
|
- Refactor the provided code, creating new classes, methods or whatever needed.
|
|
- Use any JVM language but, if you want to use one other than Java, please convert the initial codebase to that language.
|
|
- Be testable. This means that we should not need to run the main app in order to check that everything is working.
|
|
- Be self compiled.
|
|
- Be self executable.
|
|
- Have a SOLUTION.md containing all the relevant features of your provided solution.
|
|
|
|
### 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.
|
|
|
|
## Evaluation
|
|
|
|
- We will focus on your design and on your own code over the usage of frameworks and libraries
|
|
- We will also take into account the evolution of your solution, not just the delivered code
|
|
- We will evolve your solution with feasible features and evaluate how complex it is to implement them
|
|
|
|
Thanks!!
|