1041. Robot Bounded In Circle
Medium
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.
Example 1:
Input: instructions = "GGLLGG"
Output: true
Explanation: The robot moves from (0,0) to (0,2), turns 180 degrees, and then returns to (0,0).
When repeating these instructions, the robot remains in the circle of radius 2 centered at the origin.
Example 2:
Input: instructions = "GG"
Output: false
Explanation: The robot moves north indefinitely.
Example 3:
Input: instructions = "GL"
Output: true
Explanation: The robot moves from (0, 0) -> (0, 1) -> (-1, 1) -> (-1, 0) -> (0, 0) -> ...
Constraints:
1 <= instructions.length <= 100
instructions[i]
is'G'
,'L'
or,'R'
.
class Solution:
def isRobotBounded(self, instructions: str) -> bool:
point = 'N'
x ,y = 0,0
for char in instructions:
if char == 'G':
x,y = self.move(point, [x,y])
# print(point, x, y)
elif char == 'L':
if point == 'N':
point = 'W'
elif point == 'W':
point = 'S'
elif point == 'S':
point = 'E'
else:
point = 'N'
elif char == 'R':
if point == 'N':
point = 'E'
elif point == 'E':
point = 'S'
elif point == 'S':
point = 'W'
else:
point = 'N'
# print('Final',point, x, y)
return True if point != 'N' or (x == 0 and y == 0) else False
def move(self, point, coordinates):
x,y = coordinates[0], coordinates[1]
if point == 'N':
y += 1
elif point == 'E':
x += 1
elif point == 'W':
x -= 1
else:
y -= 1
return [x,y]py
Last updated