dailycodebase

2 month data structures and algorithmic scripting challenge starting from 20th December 2018 - Coding is Fun! 💯💯 Do it everyday!! Also, Do give us a ⭐ if you liked the repository

View on GitHub

cover

Day 25 - Array Series Part 8: Rotate Square Tile

Question – Given a 2 dimensional (NxN) square array, write a function that rotates the given array by 90 degrees clockwise

Example

input: [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] output: [ [7, 4, 1], [8, 5, 2], [9, 6, 3] ] 

ques

Solution

JavaScript Implementation

Solution 1 – Creating a new matrix for rotated tile

Main Logic:

for (let i=0; i<n; i++) { for (let j=0; j<n; j++) rotatedTile [i][j] = arr[(n-j)-1][i]; } 

Complete Code:

/** * @author MadhavBahl * @date 23/01/2019 * Method -- Creating a new matrix to represent the rotated tile */ function rotateTile (arr) { let n = arr.length; // print the original tile console.log ('Original Tile: '); let toPrint = ''; for (let array of arr) { toPrint = ''; for (let element of array) { toPrint += element + ' '; } console.log (toPrint); } // Make another tile to store the rotated tile let rotatedTile = []; // Initialize with zeros for (let i=0; i<n; i++) { let row = []; for (let j=0; j<n; j++) { row.push(0); } rotatedTile.push (row); } for (let i=0; i<n; i++) { for (let j=0; j<n; j++) rotatedTile [i][j] = arr[(n-j)-1][i]; } // print the rotated tile console.log ('Rotated Tile: '); for (let array of rotatedTile) { toPrint = ''; for (let element of array) { toPrint += element + ' '; } console.log (toPrint); } return rotatedTile; } rotateTile ([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); 

Solution 2 – Changing the original tile

To be added 

Java Implementation

Solution

/** * @date 3/02/19 * @author SPREEHA DUTTA */ import java.util.*; public class rotateTile { public static int[][] rotate(int arr[][]) { int i,j,ri=0; int rj=arr.length-1; int rot[][]=new int[arr.length][arr.length]; for(i=0;i<arr.length;i++) { for(j=0;j<arr.length;j++) { rot[ri][rj]=arr[i][j]; ri++; } rj--; ri=0; } return rot; } public static void main(String []args) { int n,i,j; Scanner sc=new Scanner(System.in); n=sc.nextInt(); int ri=0,rj=n-1; int arr[][]=new int[n][n]; for(i=0;i<n;i++) for(j=0;j<n;j++) arr[i][j]=sc.nextInt(); System.out.println("Original matrix is "); for(i=0;i<n;i++) { for(j=0;j<n;j++) { System.out.print(arr[i][j]+" "); } System.out.println(); } int rot[][]=rotate(arr); System.out.println("Rotated matrix is "); for(i=0;i<n;i++) { for(j=0;j<n;j++) { System.out.print(rot[i][j]+" "); } System.out.println(); } } } 

C++ Implementation

Solution

/** * @author : Rajdeep Roy Chowdhury<rrajdeeproychowdhury@gmail.com> * @handle : razdeep * @date : Feb 17, 2019 */ #include <bits/stdc++.h> std::vector<std::vector<int>> rotate(std::vector<std::vector<int>> &two_D_array) { std::vector<std::vector<int>> result(two_D_array.size()); for(int i=0; i<two_D_array.size();i++) { std::vector<int> this_array(two_D_array.size(), 0); result[i] = this_array; } int rj = two_D_array.size() - 1, ri = 0; for (int i = 0; i < two_D_array.size(); i++) { for (int j = 0; j < two_D_array[i].size(); j++) { result[ri++][rj] = two_D_array[i][j]; } rj--; ri = 0; } return result; } int main(int argc, char **argv) { int n; std::cout << "Enter the value of n "; std::cin >> n; std::vector<std::vector<int>> two_D_array(n); for (int i = 0; i < n; i++) { std::vector<int> this_array(n, 0); // std::vector<int> this_array = new std::vector<int>(n); for (int j = 0; j < n; j++) { std::cin >> this_array[j]; } two_D_array[i] = this_array; } std::cout << "Original Matrix is..." << std::endl; for (int i = 0; i < two_D_array.size(); i++) { for (int j = 0; j < two_D_array[i].size(); j++) { std::cout << two_D_array[i][j] << " "; } std::cout << std::endl; } std::vector<std::vector<int>> rotated_2d_array = rotate(two_D_array); std::cout << "Rotated matrix is" << std::endl; for (int i = 0; i < two_D_array.size(); i++) { for (int j = 0; j < two_D_array[i].size(); j++) { std::cout << rotated_2d_array[i][j] << " "; } std::cout << std::endl; } return 0; }