June 26, 2022

__Competitive programming__ is essential and today we are going to solve the round bounded in circle leetcode problem. This problem appeared in amazon coding interview.

The question states that:-

On an infinite plane, a robot initially stands at `(0, 0)`

and faces north. Note that:

- The
**north direction**is the positive direction of the y-axis. - The
**south direction**is the negative direction of the y-axis. - The
**east direction**is the positive direction of the x-axis. - The
**west direction**is the negative direction of the x-axis.

The robot can receive one of three instructions:

`"G"`

: go straight 1 unit.`"L"`

: turn 90 degrees to the left (i.e., anti-clockwise direction).`"R"`

: turn 90 degrees to the right (i.e., clockwise direction).

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.

**Solution:**

Initially, we are facing north so we first loop through the string given. For each character, if we get G, then go straight 1 unit if L then calculates the direction by turning 90 degrees to the left, R then calculates the direction by turning 9 degrees to the right.

Last we return true if we are on 0,0 or the direction is not equal to n.

So why n because we are on n initially so if we repeat this process again and again then we will end up in the north direction so the circle is not formed.

Here is my python code :

```
class Solution:
def isRobotBounded(self, instructions: str) -> bool:
#for calculation movement
def move(s,direction):
if direction=="N":
s[1]+=1
elif direction=="E":
s[0]+=1
elif direction=="W":
s[0]-=1
else:
s[1]-=1
#for calculation direction when turn left
def get_directionl(curr_dir):
if curr_dir=="N":
return "W"
elif curr_dir=="E":
return "N"
elif curr_dir=="W":
return "S"
else:
return "E"
#for calculation direction when turn right
def get_directionr(curr_dir):
if curr_dir=="N":
return "E"
elif curr_dir=="E":
return "S"
elif curr_dir=="W":
return "N"
else:
return "W"
s = [0,0]
d = "N"
for i in instructions:
if i=="G":
move(s,d)
elif i=="L":
d = get_directionl(d)
else:
d = get_directionr(d)
#return if s==[0,0]
return (s[0]==0 and s[1]==0) or d!="N"
```