Tracks
/
Erlang
Erlang
/
Exercises
/
Robot Simulator
Robot Simulator

Robot Simulator

Medium

Instructions

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.

This exercise does require some kind of global state for your robot. In erlang this can be done in various ways (starting with most idiomatic one):

  1. Use some gen_* from OTP
  2. Roll your own process and receive messages in a loop and pass the state as parameter around.
  3. Roll your own process and use the process dictionary.

Source

Inspired by an interview question at a famous company.
Edit via GitHub The link opens in a new window or tab
Erlang Exercism

Ready to start Robot Simulator?

Sign up to Exercism to learn and master Erlang with 85 exercises, and real human mentoring, all for free.