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; } } }