mirror of
https://github.com/Xevion/exercism.git
synced 2025-12-16 10:11:50 -06:00
71 lines
1.7 KiB
Markdown
71 lines
1.7 KiB
Markdown
# 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 tests
|
|
|
|
Execute the tests with:
|
|
|
|
```bash
|
|
$ mix test
|
|
```
|
|
|
|
### Pending tests
|
|
|
|
In the test suites, all but the first test have been skipped.
|
|
|
|
Once you get a test passing, you can unskip the next one by
|
|
commenting out the relevant `@tag :pending` with a `#` symbol.
|
|
|
|
For example:
|
|
|
|
```elixir
|
|
# @tag :pending
|
|
test "shouting" do
|
|
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
|
|
end
|
|
```
|
|
|
|
Or, you can enable all the tests by commenting out the
|
|
`ExUnit.configure` line in the test suite.
|
|
|
|
```elixir
|
|
# ExUnit.configure exclude: :pending, trace: true
|
|
```
|
|
|
|
If you're stuck on something, it may help to look at some of
|
|
the [available resources](https://exercism.io/tracks/elixir/resources)
|
|
out there where answers might be found.
|
|
|
|
## 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.
|