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 ",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 ",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 ",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 ",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 ",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(" "); 105 for(i=0;i<n;i++){ 106 for(j=0;j<n;j++){ 107 printf("%c",temp2[i][j]); 108 } 109 printf(" "); 110 } 111 112 fouth_tran(); 113 second_tran(); 114 if(is_equal()){ 115 return 1; 116 } 117 printf(" "); 118 for(i=0;i<n;i++){ 119 for(j=0;j<n;j++){ 120 printf("%c",temp2[i][j]); 121 } 122 printf(" "); 123 } 124 125 fouth_tran(); 126 third_tran(); 127 if(is_equal()){ 128 return 1; 129 } 130 printf(" "); 131 for(i=0;i<n;i++){ 132 for(j=0;j<n;j++){ 133 printf("%c",temp2[i][j]); 134 } 135 printf(" "); 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 ",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(" "); 197 } 198 for(i=0;i<n;i++){ 199 for(j=0;j<n;j++){ 200 printf("%c",b[i][j]); 201 } 202 printf(" "); 203 } 204 205 ret=test_tran(); 206 207 char res[10]; 208 sprintf(res,"%d ",ret); 209 fputs(res,fout); 210 printf("%d",ret); 211 return 0; 212 }