Encircular
user_4294288
python
a year ago
2.0 kB
10
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