Solved

2d array rotation

Posted on 2011-03-23
3
4,198 Views
Last Modified: 2012-05-11
how to rotate a 2d array (matrix) 90 degrees anticlockwise so:

X =
    1    2    3
    4    5    6
    7    8    9

becomes

Y =
    3    6    9
    2    5    8
    1    4    7
0
Comment
Question by:chudyksg
3 Comments
 
LVL 40

Expert Comment

by:gurvinder372
ID: 35198684
create another empty array of 3x3 dimension, and follow these steps

pick value at 1,1 and put it at 3,1
pick value at 1,2 and put it at 2,1
pick value at 1,3 and put it at 1,1
pick value at 2,1 and put it at 3,2
pick value at 2,3 and put it at 1,2
pick value at 3,1 and put it at 3,3
pick value at 3,2 and put it at 2,3
pick value at 3,3 and put it at 1,3
0
 
LVL 27

Accepted Solution

by:
rrz earned 500 total points
ID: 35200226
from
http://stackoverflow.com/questions/42519/how-do-you-rotate-a-two-dimensional-array
public int[][] rotateMatrixLeft(int[][] matrix)
{
    /* W and H are already swapped */
    int w = matrix.length;
    int h = matrix[0].length;   
    int[][] ret = new int[h][w];
    for (int i = 0; i < h; ++i) {
        for (int j = 0; j < w; ++j) {
            ret[i][j] = matrix[j][h - i - 1];
        }
    }
    return ret;
}

Open in new window

0
 

Expert Comment

by:sinsach
ID: 35205990
This will rotate any matrix 90 degrees anti-clock.

/**
* To rotate the array 90 degrees anti-clock wise. This will rotate square
* and non square matrix.
* 
* @param sourceArray
* @return
*/
public int[][] antiClock90Rotation(int[][] sourceArray) {
	int[][] rotatedArray = new int[sourceArray[0].length][sourceArray.length];
	int positionFactor = rotatedArray.length - 1;
	for (int i = 0; i < rotatedArray.length; i++) {
		for (int j = 0; j < rotatedArray[i].length; j++) {
			int a = i - positionFactor;
			a = (a < 0) ? -a : a;
			rotatedArray[i][j] = sourceArray[j][a];
		}
	}
	return rotatedArray;
}

Open in new window

0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

INTRODUCTION Working with files is a moderately common task in Java.  For most projects hard coding the file names, using parameters in configuration files, or using command-line arguments is sufficient.   However, when your application has vi…
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.

740 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question