Position of robot after given movements
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 <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)
Contact Us