Write a robot simulator.
A robot factory's test facility needs a program to verify robot movements.
The robots have three possible movements:
Robots are placed on a hypothetical infinite grid, facing a particular direction (north, east, south, or west) at a set of {x,y} coordinates, e.g., {3,8}, with coordinates increasing to the north and east.
The robot then receives a number of instructions, at which point the testing facility verifies the robot's new position, and in which direction it is pointing.
In this exercise, you might have noticed that the stub defines getters, like getX()
, but the tests access the value directly as .x
. This is due to how Groovy defines properties. Let’s break it down:
Key Points about Groovy Properties:
final
).In this exercise, we’ve only specified the required getters (and hence properties as per above) to enforce proper implementation. You're free to decide which fields (and their types) are most suitable for your solution.
If you want to explore the topic of fields and properties further, please refer to Chapter 3.3. Fields and Properties in the Groovy documentation.
Sign up to Exercism to learn and master Groovy with 66 exercises, and real human mentoring, all for free.