#include #include #include #include #include using namespace std; char t[2][2]; char t2[2][2]; char s[200][200]; char u[200][200]; char pole[200][200]; char mapping[300][300]; map mem; void perform(char op, int N) { for(int i=0; i' ) { u[i][j] = pole[N-1-j][i]; } else if ( op == '|' ) { u[i][j] = pole[i][N-1-j]; // printf("i: %d j: %d u[i][j]: %c N: %d t[i][N - 1 - j]: %c\n", i, j, u[i][j], N, t[i][N-1-j]); } else if ( op == '\\' ) { u[i][j] = pole[j][i]; } else if ( op == '/' ) { u[i][j] = pole[j][N-1-i]; } else if ( op == '-' ) { u[i][j] = pole[N-1-i][j]; } else { u[i][j] = pole[i][j]; } if (mapping[op][u[i][j]] != 0) { u[i][j] = mapping[op][u[i][j]]; } } } for(int i=0; i'] = '^'; mapping['<']['^'] = '<'; mapping['<']['v'] = '>'; mapping['<']['|'] = '-'; mapping['<']['-'] = '|'; mapping['<']['/'] = '\\'; mapping['<']['\\'] = '/'; mapping['>']['<'] = '^'; mapping['>']['>'] = 'v'; mapping['>']['^'] = '>'; mapping['>']['v'] = '<'; mapping['>']['|'] = '-'; mapping['>']['-'] = '|'; mapping['>']['/'] = '\\'; mapping['>']['\\'] = '/'; mapping['-']['<'] = '<'; mapping['-']['>'] = '>'; mapping['-']['^'] = 'v'; mapping['-']['v'] = '^'; mapping['-']['|'] = '|'; mapping['-']['-'] = '-'; mapping['-']['/'] = '\\'; mapping['-']['\\'] = '/'; mapping['|']['<'] = '>'; mapping['|']['>'] = '<'; mapping['|']['^'] = '^'; mapping['|']['v'] = 'v'; mapping['|']['|'] = '|'; mapping['|']['-'] = '-'; mapping['|']['/'] = '\\'; mapping['|']['\\'] = '/'; mapping['\\']['<'] = '^'; mapping['\\']['>'] = 'v'; mapping['\\']['^'] = '<'; mapping['\\']['v'] = '>'; mapping['\\']['|'] = '-'; mapping['\\']['-'] = '|'; mapping['\\']['/'] = '/'; mapping['\\']['\\'] = '\\'; mapping['/']['<'] = 'v'; mapping['/']['>'] = '^'; mapping['/']['^'] = '>'; mapping['/']['v'] = '<'; mapping['/']['|'] = '-'; mapping['/']['-'] = '|'; mapping['/']['/'] = '/'; mapping['/']['\\'] = '\\'; while (scanf("%d", &N) > 0) { for (int i=0; i>s[i]; } scanf("\n"); t[0][0] = '1'; t[0][1] = '2'; t[1][0] = '3'; t[1][1] = '4'; char c; while(scanf("%c", &c) == 1) { if (c == '\n') { break; } if (c == ' ') { continue; } for (int i=0; i < 2; ++i) { for (int j=0; j < 2; ++j) { pole[i][j] = t[i][j]; } } perform(c, 2); for (int i=0; i < 2; ++i) { for (int j=0; j < 2; ++j) { t[i][j] = pole[i][j]; } } // printf("%c:\n", c); // printf("%c%c\n", t[0][0], t[0][1]); // printf("%c%c\n", t[1][0], t[1][1]); } char ops[10] = "<>-|\\/ "; int vys = 0 ; for (int i=0; i < 7; ++i) { if (vys) break; for (int j=0; j < 7; ++j) { t2[0][0] = '1'; t2[0][1] = '2'; t2[1][0] = '3'; t2[1][1] = '4'; for (int i=0; i < 2; ++i) { for (int j=0; j < 2; ++j) { pole[i][j] = t2[i][j]; } } perform(ops[i], 2); perform(ops[j], 2); for (int i=0; i < 2; ++i) { for (int j=0; j < 2; ++j) { t2[i][j] = pole[i][j]; } } if (memcmp(t, t2,sizeof t) == 0) { // printf("Podobne otocenie ako: '%c%c'\n", ops[i], ops[j]); for (int i=0; i < N; ++i) { for (int j=0; j < N; ++j) { pole[i][j] = s[i][j]; } } perform(ops[i], N); perform(ops[j], N); for (int i=0; i < N; ++i) { for (int j=0; j < N; ++j) { printf("%c", pole[i][j]); } printf("\n"); } vys = 1; break; } } } } return 0; }