Back to all solutions

#1041 - Robot Bounded In Circle

Problem Description

On an infinite plane, a robot initially stands at (0, 0) and faces north.

The robot can receive one of three instructions:

  • "G": go straight 1 unit;
  • "L": turn 90 degrees to the left;
  • "R": turn 90 degrees to the right.

The robot performs the instructions given in order, and repeats them forever.

Return true if and only if there exists a circle in the plane such that the robot never leaves the circle.

Solution

/**
 * @param {string} instructions
 * @return {boolean}
 */
var isRobotBounded = function(instructions) {
  let x = 0, y = 0;
  let dx = 0, dy = 1;

  for (const direction of instructions) {
    switch (direction) {
      case 'R': [dx, dy] = [dy, -dx]; break;
      case 'L': [dy, dx] = [dx, -dy]; break;
      case 'G': [x, y] = [x + dx, y + dy]; break;
    }
  }

  return (x === 0 && y === 0) || dy !== 1;
}