?
Solved

2d array rotation

Posted on 2011-03-23
3
Medium Priority
?
6,045 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:Gurvinder Pal Singh
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 28

Accepted Solution

by:
rrz earned 2000 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

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
In this post we will learn how to make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
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:

589 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