# Encircular

user_4294288
python
a month ago
2.0 kB
5
Indexable
Never
```# Encircular

# Build a computer simulation of a mobile robot. The robot moves on an infinite plane, starting from position (0, 0).
# Its movements are described by a command string consisting of one or more of the following three letters:
# G instructs the robot to move forward one step.
# L instructs the robot to turn left in place.
# R instructs the robot to turn right in place.

# The robot performs the instructions in a command sequence in an infinite loop. Determine whether there exists some circle such that the robot always moves within the circle.

# Consider the commands R and G executed infinitely. A diagram of the robot's movement looks like this:

# RG -> RG
# ^     |
# |     v
# RG <- RG

# The robot will never leave the circle, and therefore the answer is YES.

# Function Description

# Complete the function doesCircleExist in the editor below.
# The function must return an array of n strings either YES or NO based on whether the robot is bound within a circle or not, in order of test results.

# doesCircleExist has the following parameter(s):
# commands[commands[0],...commands[n-1]]: An array of n commands[i] where each represents a list of commands to test.

# Constraints
# 1 ≤ |commands[i]| ≤ 2500
# 1 ≤ n ≤ 10
# Each command consists of G, L, and R only.

# Solution -

def doesCircleExist(commands):
result = []

for command in commands:
x = y = 0
direction = (0, 1)

for i in range(len(command)):
cmd = command[i]

if cmd == "G":
x, y = x + direction[0], y + direction[1]
elif cmd == "L":
direction = (-direction[1], direction[0])
else:
direction = (direction[1], -direction[0])

if x == 0 and y == 0 or direction != (0, 1):
result.append("YES")
else:
result.append("NO")

return result

# Test
commands = ["G", "L", "RGRG"]
print(doesCircleExist(commands))```