Skip to content
Permalink
Browse files

Add documentation

  • Loading branch information...
SelenaSmall committed Aug 27, 2017
1 parent 8f18c61 commit 04f310f8c5513c105a01570bd4b90a1231c40f04
Showing with 107 additions and 1 deletion.
  1. +107 −1 README.md
108 README.md
@@ -1,2 +1,108 @@
# toy_robot
# Toy Robot
Toy robot simulator written in Ruby

## Table of Contents
1. [Installation](#Installation)
2. [Usage](#Usage)
3. [Testing](#Testing)
4. [Design](#Design)
5. [Specifications](#Specifications)

## Installation
Environment: Built on Mac OSx using Ruby -v 2.4.1

Make sure you have the correct version of ruby installed
https://www.ruby-lang.org/en/documentation/installation/

Clone this Repo
> $ git clone https://github.com/selenasmall/toy_robot.git
In root of the app run bundle install
> $ gem install bundler && bundle install
## Usage
Run the program from the app root
> $ toy_robot.rb
Expected terminal output:
> Options: PLACE X,Y,F; MOVE; LEFT; RIGHT; REPORT; EXIT
Available commands
| Command | Description |
| ------------- | ------------- |
| PLACE X,Y,F | Place the robot on the table at coordinates x,y and facing the direction f. Valid x andy values are between 0-4. Valid directions are WEST, NORTH, EAST, SOUTH. Example Input: "PLACE 0,0,NORTH"|
| MOVE | Move the robot forward 1 step in the direction it is facing. |
| LEFT | Turn the robot's direction 90 degress to the left. I.e. if the robot is facing NORTH, 1 left turn will turn the robot's direction to WEST. |
| RIGHT | Turn the robot's direction 90 degress to the right. I.e. if the robot is facing NORTH, 1 left turn will turn the robot's direction to EAST. |
| REPORT | Output the current position of the robot. Example Output: "Output: 0,0,NORTH" |
| EXIT | Gracefully exit the program. |

## Testing
Test by running rspec http://rspec.info/
> $ bundle exec rspec
Expected terminal output:
> ... ..Output: 0,0,NORTH
> ... ... ... ...Output: 1,2,NORTH
> ... ... ... ... ... ...
>
> Finished in 0.01938 seconds (files took 0.23698 seconds to load)
> 35 examples, 0 failures
## Speicifications
__Description:__
. The application is a simulation of a toy robot moving on a square tabletop, of dimensions 5 units x 5 units.
. There are no other obstruc8tions on the table surface.
. The robot is free to roam around the surface of the table, but must be prevented from falling to destruc8on. Any movement
that would result in the robot falling from the table must be prevented, however further valid movement commands must s8ll
be allowed.

. Create an applica8on that can read in commands of the following form -
PLACE X,Y,F
MOVE
LEFT
RIGHT
REPORT

. PLACE will put the toy robot on the table in posi8on X,Y and facing NORTH, SOUTH, EAST or WEST.
. The origin (0,0) can be considered to be the SOUTH WEST most corner.
. The first valid command to the robot is a PLACE command, aXer that, any sequence of commands may be issued, in any order, including another PLACE command. The applica8on should discard all commands in the sequence un8l a valid PLACE command has been executed.
. MOVE will move the toy robot one unit forward in the direc8on it is currently facing.
. LEFT and RIGHT will rotate the robot 90 degrees in the specified direc8on without changing the posi8on of the robot.
. REPORT will announce the X,Y and F of the robot. This can be in any form, but standard output is sufficient.

. A robot that is not on the table can choose the ignore the MOVE, LEFT, RIGHT

and REPORT commands.
. Input can be from a file, or from standard input, as the developer chooses. . Provide test data to exercise the applica8on.

__Constraints:__
The toy robot must not fall off the table during movement. This also includes the ini8al placement of the toy robot.
Any move that would cause the robot to fall must be ignored.

Example Input and Output:
a)
PLACE 0,0,NORTH
MOVE
REPORT
Output: 0,1,NORTH

b)
PLACE 0,0,NORTH
LEFT
REPORT
Output: 0,0,WEST

c)
PLACE 1,2,EAST
MOVE
MOVE
LEFT
MOVE
REPORT
Output: 3,3,NORTH

__Deliverables:__
The source files, the test data and any test code.
It is not required to provide any graphical output showing the movement of the toy robot.

0 comments on commit 04f310f

Please sign in to comment.
You can’t perform that action at this time.