From 45bc2771cfd44ccac72c765b71fa698c7d45b027 Mon Sep 17 00:00:00 2001 From: Ross Healy Date: Tue, 6 Feb 2024 11:02:45 +0000 Subject: [PATCH] Add Programming Exercise --- Programming-Exercise.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Programming-Exercise.md diff --git a/Programming-Exercise.md b/Programming-Exercise.md new file mode 100644 index 0000000..322bde0 --- /dev/null +++ b/Programming-Exercise.md @@ -0,0 +1,39 @@ +### Specification + +A squad of robotic rovers are to be landed by NASA on a plateau on Mars. This plateau, which is curiously rectangular, must be navigated by the rovers so that the on board cameras +can get a complete view of the surrounding terrain to send back to Earth. A rover’s position is represented by a combination of x and y co-ordinates and a letter presenting one of the +four cardinal compass points. The plateau is divided up into a grid to simplify navigation. An example position might be 0, 0, N, which means the rover is in the bottom left corner and +facing North. +In order to control a rover, NASA sends a simple string of letters. The possible letters are ‘L’, ‘R’ and ‘M’. ‘L’ and ‘R’ makes the rover spin 90 degrees left or right respectively, without +moving from its current spot. ‘M’ means move forward one grid point, and maintain the same heading. +Assume that the square directly North from (x, y) is (x, y+1). + +### Input +The first line of input is the upper-right coordinates of the plateau, the lower-left coordinates are assumed to be 0,0. The rest of the input is information pertaining to the rovers that +have been deployed. Each rover has two lines of input. The first line gives the rover’s position, and the second line is a series of instructions telling the rover how to explore the +plateau. The position is made up of two integers and a letter separated by spaces, corresponding to the x and y co-ordinates and the rover’s orientation. Each rover will be finished +sequentially, which means that the second rover won’t start to move until the first one has finished moving. + +### Output +The output for each rover should be its final co-ordinates and heading. + +### Test Input +Input Notes +5 5 Plateau upper right coordinates +1 2 N Rover one start point and heading +LMLMLMLMM Rover one movement commands +3 3 E Rover two start point and heading +MMRMMRMRRM Rover two movement commands +Expected Output +1 3 N +5 1 E + +### Typical tasks to consider +• Capture user input +• Process / validate user input +• Move rover +• Rotate rover +• Store position +• Maintain plateau +• Validate next move +• Output position / status \ No newline at end of file