a month ago
2.0 kB
# 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])
                direction = (direction[1], -direction[0])

        if x == 0 and y == 0 or direction != (0, 1):

    return result

# Test
commands = ["G", "L", "RGRG"]
Leave a Comment