Given an array of list of commands U(Up), D(Down), L(Left) and R(Right) and initial cell position (x, y) in a matrix. Find the final cell position of the object in the matrix after following the given commands. It is assumed that the final required cell position exists in the matrix.
Examples:
Input : command[] = "DDLRULL"
x = 3, y = 4
Output : (1, 5)
Input : command[] = "LLRUUUDRRDDDULRLLUDUUR"
x = 6, y = 5
Output : (6, 3)
Source: Flipkart Interview (SDE-1 On Campus).
Approach:
Following are the steps:
- Count cup, cdown, cleft and cright for U(Up), D(Down), L(Left) and R(Right) movements respectively.
- Calculate final_x = x + (cright – cleft) and final_y = y + (cdown – cup).
The final cell position is (final_x, final_y)
Implementation:
C++
// C++ implementation to find the final cell position// in the given matrix#include <bits/stdc++.h>using namespace std;// function to find the final cell position// in the given matrixvoid finalPos(char command[], int n, int x, int y){ // to count up, down, left and cright // movements int cup, cdown, cleft, cright; // to store the final coordinate position int final_x, final_y; cup = cdown = cleft = cright = 0; // traverse the command array for (int i = 0; i < n; i++) { if (command[i] == 'U') cup++; else if (command[i] == 'D') cdown++; else if (command[i] == 'L') cleft++; else if (command[i] == 'R') cright++; } // calculate final values final_x = x + (cright - cleft); final_y = y + (cdown - cup); cout << "Final Position: " << "(" << final_x << ", " << final_y << ")";}// Driver program to test aboveint main(){ char command[] = "DDLRULL"; int n = (sizeof(command) / sizeof(char)) - 1; int x = 3, y = 4; finalPos(command, n, x, y); return 0;} |
Java
// Java implementation to find // the final cell position// in the given matriximport java.util.*;import java.lang.*;import java.io.*;class GFG{// function to find the // final cell position// in the given matrixstatic void finalPos(String command, int n, int x, int y){ // to count up, down, left // and cright movements int cup, cdown, cleft, cright; // to store the final // coordinate position int final_x, final_y; cup = cdown = cleft = cright = 0; // traverse the command array for (int i = 0; i < n; i++) { if (command.charAt(i) == 'U') cup++; else if (command.charAt(i) == 'D') cdown++; else if (command.charAt(i)== 'L') cleft++; else if (command.charAt(i) == 'R') cright++; } // calculate final values final_x = x + (cright - cleft); final_y = y + (cdown - cup); System.out.println("Final Position: " + "(" + final_x + ", " + final_y + ")");}// Driver Codepublic static void main(String []args){ String command = "DDLRULL"; int n = command.length(); int x = 3, y = 4; finalPos(command, n, x, y);}}// This code is contributed// by Subhadeep |
Python3
# Python3 implementation to find # the final cell position# in the given matrix# function to find the # final cell position# in the given matrixdef finalPos(command, n, x, y): cup = 0 cdown = 0 cleft = 0 cright = 0; # traverse the command array for i in range(n): if (command[i] == 'U'): cup+=1 elif (command[i] == 'D'): cdown += 1 elif (command[i]== 'L'): cleft += 1 elif (command[i] == 'R'): cright += 1 # calculate final values final_x = x + (cright - cleft); final_y = y + (cdown - cup); print("Final Position:", "(", final_x, ",", final_y, ")"); # driver codecommand = "DDLRULL";n = len(command);x = 3y = 4;finalPos(command, n, x, y); # This code is contributed by phasing17 |
C#
// C# implementation to find // the final cell position// in the given matrixclass GFG{// function to find the // final cell position// in the given matrixstatic void finalPos(string command, int n, int x, int y){ // to count up, down, left // and cright movements int cup, cdown, cleft, cright; // to store the final // coordinate position int final_x, final_y; cup = cdown = cleft = cright = 0; // traverse the command array for (int i = 0; i < n; i++) { if (command[i] == 'U') cup++; else if (command[i] == 'D') cdown++; else if (command[i]== 'L') cleft++; else if (command[i] == 'R') cright++; } // calculate final values final_x = x + (cright - cleft); final_y = y + (cdown - cup); System.Console.WriteLine("Final Position: " + "(" + final_x + ", " + final_y + ")");}// Driver Codepublic static void Main(){ string command = "DDLRULL"; int n = command.Length; int x = 3, y = 4; finalPos(command, n, x, y);}}// This code is contributed// by mits |
PHP
<?php// PHP implementation to find the final // cell position in the given matrix// function to find the final cell // position in the given matrixfunction finalPos($command, $n, $x, $y){ // to count up, down, left and // cright movements $cup; $cdown; $cleft; $cright; // to store the final coordinate // position $final_x; $final_y; $cup = $cdown = $cleft = $cright = 0; // traverse the command array for ($i = 0; $i < $n; $i++) { if ($command[$i] == 'U') $cup++; else if ($command[$i] == 'D') $cdown++; else if ($command[$i] == 'L') $cleft++; else if ($command[$i] == 'R') $cright++; } // calculate final values $final_x = $x + ($cright - $cleft); $final_y = $y + ($cdown - $cup); echo "Final Position: " . "(" . $final_x . ", " . $final_y . ")";}// Driver Code$command = "DDLRULL";$n = strlen($command);$x = 3; $y = 4;finalPos($command, $n, $x, $y);// This code is contributed // by Akanksha Rai |
Javascript
<script>// JavaScript implementation to find // the final cell position// in the given matrix// function to find the // final cell position// in the given matrixfunction finalPos(command, n, x, y){ // to count up, down, left // and cright movements let cup, cdown, cleft, cright; // to store the final // coordinate position let final_x, final_y; cup = cdown = cleft = cright = 0; // traverse the command array for (let i = 0; i < n; i++) { if (command[i] == 'U') cup++; else if (command[i] == 'D') cdown++; else if (command[i]== 'L') cleft++; else if (command[i] == 'R') cright++; } // calculate final values final_x = x + (cright - cleft); final_y = y + (cdown - cup); document.write("Final Position: " + "(" + final_x + ", " + final_y + ")");} // driver code let command = "DDLRULL"; let n = command.length; let x = 3, y = 4; finalPos(command, n, x, y); </script> |
Final Position: (1, 5)
Complexity Analysis:
- Time Complexity: O(n), where
is the number of commands.
- Space complexity: O(1) since using constant variables
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
