Back to challenges
Medium 0 solved 0% acceptance

Robot Command Simulator

Move a robot using L (turn left 90 degrees), R (turn right 90 degrees), and A (advance one step).

What you'll learn

  • Track position and facing direction
  • Turn left and right with direction arrays
  • Process a command string step by step

Problem

Move a robot using L (turn left 90 degrees), R (turn right 90 degrees), and A (advance one step). Turning does not move it. Positive x points east and positive y points north. Directions are encoded as 0 = north, 1 = east, 2 = south, 3 = west. There are no obstacles or boundaries.

Implement robot_command_simulator(x, y, direction, commands).

Input

x: Initial horizontal coordinate.

y: Initial vertical coordinate.

direction: Initial direction: 0 north, 1 east, 2 south, 3 west.

commands: Commands to process from left to right.

Output

Return [final_x, final_y, final_direction], using the same direction encoding.

Constraints

−1,000,000,000 ≤ initial x, y ≤ 1,000,000,000. Direction is 0…3. There are 0…100,000 commands, each uppercase L, R, or A.

Examples

Example 1
Input:
x = 0
y = 0
commands = "RAALA"
direction = 0

Expected output:
expected = [2, 1, 0]
Input:
long long x = 0;
long long y = 0;
std::string commands = "RAALA";
long long direction = 0;

Expected output:
std::vector<long long> expected = {2, 1, 0};
Input:
long x = 0;
long y = 0;
string commands = "RAALA";
long direction = 0;

Expected output:
long[] expected = new long[] {2, 1, 0};

Explanation

Turn east, advance twice to (2, 0), turn north, then advance to (2, 1). Direction 0 means north.

Example 2
Input:
x = 3
y = -2
commands = "LLLL"
direction = 1

Expected output:
expected = [3, -2, 1]
Input:
long long x = 3;
long long y = -2;
std::string commands = "LLLL";
long long direction = 1;

Expected output:
std::vector<long long> expected = {3, -2, 1};
Input:
long x = 3;
long y = -2;
string commands = "LLLL";
long direction = 1;

Expected output:
long[] expected = new long[] {3, -2, 1};

Explanation

Four left turns restore the original east-facing direction (1). Turning never changes the coordinates.

How to approach it

Try on your own first, then open one hint at a time.

Hint 1

Track position and direction separately; turns change orientation without moving the robot.

Hint 2

Advance uses the current direction to update one coordinate by one step.

Hint 3

Remember the direction wraps around after turning left from north or right from west.

Expected complexity

O(n) time, O(1) extra space

References

This challenge is adapted for CodeUtility. Follow the statement and constraints above.

Learn from others

Community solutions

No published solutions yet. Solve this challenge to share the first one.