Hello candidate!!
Welcome to Wallapop and its backend technical test
We need to improve the existing solution that translates commands sent from Earth to instructions that are understood by our Rover on Mars
Currently, the code is very complicated and tangled, so we'd like you to invest some time to clean it up
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)
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
- Fulfill the 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.
- Fulfill the 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.
- 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
This project is a Template Project that allows you to create a new project of your own based on this one
We would like you to maintain this new repository as private, and give access to wallabackend
to evaluate it once you are done with your solution
Please, let us know as soon as you finish, otherwise we will not start the review
Thanks & good luck!!