Position of robot after given movements

• Difficulty Level : Basic
• Last Updated : 17 May, 2021

Given a robot which can only move in four directions, UP(U), DOWN(D), LEFT(L), RIGHT(R). Given a string consisting of instructions to move. Output the coordinates of a robot after executing the instructions. Initial position of robot is at origin(0, 0).

Examples:

Input : move = “UDDLRL”
Output : (-1, -1)
Explanation:
Move U : (0, 0)–(0, 1)
Move D : (0, 1)–(0, 0)
Move D : (0, 0)–(0, -1)
Move L : (0, -1)–(-1, -1)
Move R : (-1, -1)–(0, -1)
Move L : (0, -1)–(-1, -1)
Therefore final position after the complete
movement is: (-1, -1)

Input : move = “UDDLLRUUUDUURUDDUULLDRRRR”
Output : (2, 3)

Approach:
Count number of up movements (U), down movements (D), left movements (L) and right movements (R) as countUp, countDown, countLeft and countRight respectively. Final x-coordinate will be
(countRight – countLeft) and y-coordinate will be (countUp – countDown).

Below is the implementation of the above idea:

C++

 // C++ implementation to find  final position of// robot after the complete movement#include using namespace std; // Function to find  final position of// robot after the complete movementvoid finalPosition(string move){    int l = move.size();    int countUp = 0, countDown = 0;    int countLeft = 0, countRight = 0;     // Traverse the instruction string 'move'    for (int i = 0; i < l; i++)    {        // For each movement increment its        // respective counter        if (move[i] == 'U')            countUp++;        else if (move[i] == 'D')            countDown++;        else if (move[i] == 'L')            countLeft++;        else if (move[i] == 'R')            countRight++;    }     // Required final position of robot    cout << "Final Position: ("         << (countRight - countLeft)         << ", " << (countUp - countDown)         << ")" << endl;} // Driver codeint main(){    string move = "UDDLLRUUUDUURUDDUULLDRRRR";    finalPosition(move);    return 0;}

Java

 // Java implementation to find final position// of robot after the complete movement import java.io.*; class GFG {     // function to find final position of    // robot after the complete movement    static void finalPosition(String move)    {         int l = move.length();        int countUp = 0, countDown = 0;        int countLeft = 0, countRight = 0;         // traverse the instruction string        // 'move'        for (int i = 0; i < l; i++)        {            // for each movement increment            // its respective counter            if (move.charAt(i) == 'U')                countUp++;             else if (move.charAt(i) == 'D')                countDown++;             else if (move.charAt(i) == 'L')                countLeft++;             else if (move.charAt(i) == 'R')                countRight++;        }         // required final position of robot        System.out.println("Final Position: ("                           + (countRight - countLeft) + ", "                           + (countUp - countDown) + ")");    }     // Driver code    public static void main(String[] args)    {        String move = "UDDLLRUUUDUURUDDUULLDRRRR";        finalPosition(move);    }} // This code is contributed by vt_m

Python3

 # Python3 implementation to find final position# of robot after the complete movement # function to find final position of# robot after the complete movement  def finalPosition(move):     l = len(move)    countUp, countDown = 0, 0    countLeft, countRight = 0, 0     # traverse the instruction string    # 'move'    for i in range(l):         # for each movement increment        # its respective counter        if (move[i] == 'U'):            countUp += 1         elif(move[i] == 'D'):            countDown += 1         elif(move[i] == 'L'):            countLeft += 1         elif(move[i] == 'R'):            countRight += 1     # required final position of robot    print("Final Position: (", (countRight - countLeft),          ", ", (countUp - countDown), ")")  # Driver codeif __name__ == '__main__':    move = "UDDLLRUUUDUURUDDUULLDRRRR"    finalPosition(move) # This code is contributed by 29AjayKumar

C#

 // C# implementation to find final position// of robot after the complete movementusing System; class GFG {     // function to find final position of    // robot after the complete movement    static void finalPosition(String move)    {        int l = move.Length;        int countUp = 0, countDown = 0;        int countLeft = 0, countRight = 0;         // traverse the instruction string        // 'move'        for (int i = 0; i < l; i++)        {           // for each movement increment            // its respective counter            if (move[i] == 'U')                countUp++;             else if (move[i] == 'D')                countDown++;             else if (move[i] == 'L')                countLeft++;             else if (move[i] == 'R')                countRight++;        }         // required final position of robot        Console.WriteLine("Final Position: ("                          + (countRight - countLeft) + ", "                          + (countUp - countDown) + ")");    }     // Driver code    public static void Main()    {        String move = "UDDLLRUUUDUURUDDUULLDRRRR";        finalPosition(move);    }} // This code is contributed by Sam007



Javascript


Output
Final Position: (2, 3)

My Personal Notes arrow_drop_up