Encircular
user_4294288
python
2 years ago
2.0 kB
14
Indexable
# 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))Editor is loading...
Leave a Comment