AOJ0133 Rotation of a Pattern

問題リンク Rotation of a Pattern

  • 解法

図をs[ ][ ]として、90度右に回転させた図をt[ ][ ]とします。
sからtを得ることができればこれを繰り返すことで180度270度回転の図も得られます。
t[i][j]の画素はs[i'][j']の画素からやってきたもので、これは(i, j)を左に90度回転させた座標です。
i' = i*cos90 - j*sin90
j' = i*sin90 + j*sin90
なので結局(i', j') = (-j, i)です。
ここでいう-jとは、反転を意味するので7-jの意味となります。
つまり、t[i][j] = s[7-j][i]です。

  • ソース
import java.util.Scanner;

//Rotation of a Pattern
public class AOJ0133 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		char[][] s = new char[8][8];
		for(int i=0;i<8;i++)s[i]=sc.next().toCharArray();
		for(int r=90;r<=270;r+=90){
			System.out.println(r);
			char[][] t = new char[8][8];
			for(int i=0;i<8;i++){
				for(int j=0;j<8;j++)t[i][j]=s[7-j][i];
				System.out.println(new String(t[i]));
			}
			s = t;
		}
	}
}