1 /*
2 ID: vincent63
3 LANG: C
4 TASK: transform
5 */
6 #include <stdio.h>
7 #include<stdlib.h>
8 #include<string.h>
9 static char a[10][10];
10 static char b[10][10];
11 static char temp[10][10];
12 static char temp2[10][10];
13 static int n;
14 //return 1 if can be done;
15 //return 0,if cant be done;
16 //90
17 int first_tran(){
18 int ret=1;
19 int i,j;
20
21 for(i=0;i<n;i++){
22 for(j=0;j<n;j++){
23 temp2[j][n-1-i]=temp[i][j];
24 if(a[i][j]!=b[j][n-1-i]){
25 ret=0;
26 //printf("not match (%d,%d) %c (%d,%d) %c\n",i,j,a[i][j],j,n-1-i,b[j][n-i]);
27 }
28 }
29 }
30 return ret;
31 }
32 //180
33 int second_tran(){
34 int ret=1;
35 int i,j;
36
37 for(i=0;i<n;i++){
38 for(j=0;j<n;j++){
39 temp2[n-1-i][n-1-j]=temp[i][j];
40 if(a[i][j]!=b[n-1-i][n-1-j]){
41 ret=0;
42 //printf("not match (%d,%d) %c (%d,%d) %c\n",i,j,a[i][j],n-1-i,n-1-j,b[n-1-i][n-1-j]);
43 }
44 }
45 }
46 return ret;
47 }
48 //270
49 int third_tran(){
50 int ret=1;
51 int i,j;
52
53 for(i=0;i<n;i++){
54 for(j=0;j<n;j++){
55 temp2[n-1-j][i]=temp[i][j];
56 if(a[i][j]!=b[n-1-j][i]){
57 ret=0;
58 //printf("not match (%d,%d) %c (%d,%d) %c\n",i,j,a[i][j],n-1-j,i,b[n-1-j][i]);
59 }
60 }
61 }
62 return ret;
63 }
64
65 //mirror
66 int fouth_tran(){
67 int ret=1;
68 int i,j;
69
70 for(i=0;i<n;i++){
71 for(j=0;j<n;j++){
72 temp[i][n-1-j]=a[i][j];
73 if(a[i][j]!=b[i][n-1-j]){
74 ret=0;
75 //printf("not match (%d,%d) %c (%d,%d) %c\n",i,j,a[i][j],i,n-1-j,b[i][n-1-j]);
76 }
77 }
78 }
79 return ret;
80 }
81 int is_equal(){
82 int ret=1;
83 int i,j;
84
85 for(i=0;i<n;i++){
86 for(j=0;j<n;j++){
87 if(temp2[i][j]!=b[i][j]){
88 ret=0;
89 //printf("not match (%d,%d) %c (%d,%d) %c\n",i,j,a[i][j],i,j,b[i][j]);
90 }
91 }
92 }
93 return ret;
94 }
95 //combine
96 int fifth_tran(){
97 int i,j;
98 fouth_tran();
99 first_tran();
100 if(is_equal()){
101 return 1;
102 }
103
104 printf("\n");
105 for(i=0;i<n;i++){
106 for(j=0;j<n;j++){
107 printf("%c",temp2[i][j]);
108 }
109 printf("\n");
110 }
111
112 fouth_tran();
113 second_tran();
114 if(is_equal()){
115 return 1;
116 }
117 printf("\n");
118 for(i=0;i<n;i++){
119 for(j=0;j<n;j++){
120 printf("%c",temp2[i][j]);
121 }
122 printf("\n");
123 }
124
125 fouth_tran();
126 third_tran();
127 if(is_equal()){
128 return 1;
129 }
130 printf("\n");
131 for(i=0;i<n;i++){
132 for(j=0;j<n;j++){
133 printf("%c",temp2[i][j]);
134 }
135 printf("\n");
136 }
137
138 return 0;
139 }
140 //no change
141 int sixth_tran(){
142 int ret=1;
143 int i,j;
144
145 for(i=0;i<n;i++){
146 for(j=0;j<n;j++){
147 if(a[i][j]!=b[i][j]){
148 ret=0;
149 //printf("not match (%d,%d) %c (%d,%d) %c\n",i,j,a[i][j],i,j,b[i][j]);
150 }
151 }
152 }
153 return ret;
154 }
155 int test_tran(){
156 if(first_tran()){
157 return 1;
158 }else if(second_tran()){
159 return 2;
160 }else if(third_tran()){
161 return 3;
162 }else if(fouth_tran()){
163 return 4;
164 }else if(fifth_tran()){
165 return 5;
166 }else if(sixth_tran()){
167 return 6;
168 }
169 return 7;
170 }
171
172 int main () {
173 FILE *fin = fopen ("transform.in", "r");
174 FILE *fout = fopen ("transform.out", "w");
175
176 int i,j,ret;
177 char buf[10];
178 char buf2[20];
179
180 fgets(buf,10,fin);
181 n=atoi(buf);
182
183 for(i=0;i<n;i++){
184 fgets(buf2,20,fin);
185 strcpy(a[i],buf2);
186 }
187 for(i=0;i<n;i++){
188 fgets(buf2,20,fin);
189 strcpy(b[i],buf2);
190 }
191
192 for(i=0;i<n;i++){
193 for(j=0;j<n;j++){
194 printf("%c",a[i][j]);
195 }
196 printf("\n");
197 }
198 for(i=0;i<n;i++){
199 for(j=0;j<n;j++){
200 printf("%c",b[i][j]);
201 }
202 printf("\n");
203 }
204
205 ret=test_tran();
206
207 char res[10];
208 sprintf(res,"%d\n",ret);
209 fputs(res,fout);
210 printf("%d",ret);
211 return 0;
212 }