The implementation does not follow the leetcode assignement.

Leetcode assignement says possible movements are G,L,R.

And here in the implementation you are dealing with S,R

Here’s the updated version.

```
def is_robot_bounded( instructions: str) -> bool:
# Current position.
x, y = 0 , 0
# Direction
dx, dy = 0 , 1 # starts pointing to the north
for I in instructions:
if i == 'L':
dx, dy = -dy, dx # 0, 1 -> -1, 0, -> 0, -1
if I == 'R':
dx, dy = dy, -dx # 0, 1 -> 1, 0 -> 0, -1
if i == 'G':
x = x + dx
y = y + dy
return (x, y) == 0 or (dx, dy) != (0, 0)
```