Open In App

Position of robot after given movements

Last Updated : 27 Jul, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

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)

Source: Goldman Sachs Interview Experience | Set 36 .

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 <bits/stdc++.h>
using namespace std;

// Function to find  final position of
// robot after the complete movement
void 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 code
int 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 code
if __name__ == '__main__':
    move = "UDDLLRUUUDUURUDDUULLDRRRR"
    finalPosition(move)

# This code is contributed by 29AjayKumar
C#
// C# implementation to find final position
// of robot after the complete movement
using 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
PHP
<?php
// PHP implementation to find 
// final position of robot after
// the complete movement

// function to find final position of
// robot after the complete movement
function finalPosition($move)
{
    $l = strlen($move);
    $countUp = 0;
    $countDown = 0;
    $countLeft = 0;
    $countRight = 0;

    // traverse the instruction
    // string 'move'
    for ($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
    echo "Final Position: ("
        . ($countRight - $countLeft)
        . ", " , ($countUp - $countDown)
        . ")" ."\n";
}

    // Driver Code
    $move = "UDDLLRUUUDUURUDDUULLDRRRR";
    finalPosition($move);
    
// This code is contributed by Sam007
?>
JavaScript
<script>
    // Javascript implementation to find final position
    // of robot after the complete movement
    
    // function to find final position of
    // robot after the complete movement
    function finalPosition(move)
    {
        let l = move.length;
        let countUp = 0, countDown = 0;
        let countLeft = 0, countRight = 0;
 
        // traverse the instruction string
        // 'move'
        for (let 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
        document.write("Final Position: ("
                          + (countRight - countLeft) + ", "
                          + (countUp - countDown) + ")");
    }
    
    let move = "UDDLLRUUUDUURUDDUULLDRRRR";
      finalPosition(move);
    
</script>

Output
Final Position: (2, 3)

Article Tags :
Practice Tags :

Similar Reads