robot

package
v0.0.0-...-427ddc2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 19, 2017 License: MIT Imports: 1 Imported by: 0

README

Robot Simulator

Write a robot simulator.

A robot factory's test facility needs a program to verify robot movements.

The robots have three possible movements:

  • turn right
  • turn left
  • advance

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.

  • The letter-string "RAALAL" means:
    • Turn right
    • Advance twice
    • Turn left
    • Advance once
    • Turn left yet again
  • Say a robot starts at {7, 3} facing north. Then running this stream of instructions should leave it at {9, 4} facing west.

Running the tests

To run the tests run the command go test from within the exercise directory.

If the test suite contains benchmarks, you can run these with the -bench flag:

go test -bench .

Keep in mind that each reviewer will run benchmarks on a different machine, with different specs, so the results from these benchmark tests may vary.

Further information

For more detailed information about the Go track, including how to get help if you're having trouble, please visit the exercism.io Go language page.

Source

Inspired by an interview question at a famous company.

Submitting Incomplete Solutions

It's possible to submit an incomplete solution so you can see how others have completed the exercise.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Step1Robot struct {
	X, Y int
	Dir
}

Functions

func Advance

func Advance()

func Left

func Left()
func Right()

func Room

func Room(extent Rect, robot Step2Robot, act chan Action, report chan Step2Robot)

func Room3

func Room3(extent Rect, robots []Step3Robot, act chan Action3, rep chan []Step3Robot, log chan string)

func StartRobot

func StartRobot(cmd chan Command, act chan Action)

func StartRobot3

func StartRobot3(name, script string, act chan Action3, log chan string)

Types

type Action

type Action byte

type Action3

type Action3 struct {
	// contains filtered or unexported fields
}

type Command

type Command byte // valid values are 'R', 'L', 'A'

type Dir

type Dir int
const (
	N Dir = iota
	E
	S
	W
)

======= Step 1

func (Dir) String

func (d Dir) String() string

type Pos

type Pos struct{ Easting, Northing RU }

type RU

type RU int

type Rect

type Rect struct{ Min, Max Pos }

type Step2Robot

type Step2Robot struct {
	Dir
	Pos
}

type Step3Robot

type Step3Robot struct {
	Name string
	Step2Robot
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL