아.. 이게 맞나.. 그냥 일일이 다했다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n;
char ch[4];
int k;
char square[8][11];
void change(char tmp1, char tmp2) {
int tmp3;
char tmp;
if (tmp1 == 'U') tmp3 = 1;
else if (tmp1 == 'D') tmp3 = 2;
else if (tmp1 == 'F') tmp3 = 3;
else if (tmp1 == 'B') tmp3 = 4;
else if (tmp1 == 'L') tmp3 = 5;
else tmp3 = 6;
if (tmp2 == '+') {
tmp = square[tmp3][1];
square[tmp3][1] = square[tmp3][7];
square[tmp3][7] = square[tmp3][9];
square[tmp3][9] = square[tmp3][3];
square[tmp3][3] = tmp;
tmp = square[tmp3][2];
square[tmp3][2] = square[tmp3][4];
square[tmp3][4] = square[tmp3][8];
square[tmp3][8] = square[tmp3][6];
square[tmp3][6] = tmp;
}
else {
tmp = square[tmp3][1];
square[tmp3][1] = square[tmp3][3];
square[tmp3][3] = square[tmp3][9];
square[tmp3][9] = square[tmp3][7];
square[tmp3][7] = tmp;
tmp = square[tmp3][2];
square[tmp3][2] = square[tmp3][6];
square[tmp3][6] = square[tmp3][8];
square[tmp3][8] = square[tmp3][4];
square[tmp3][4] = tmp;
}
}
void go() {
char tmp1 = ch[0];
char tmp2 = ch[1];
char tmp;
if (tmp1 == 'U') {
if (tmp2 == '+') {
for (int i = 1; i <= 3; i++) {
tmp = square[3][i];
square[3][i] = square[6][i];
square[6][i] = square[4][i];
square[4][i] = square[5][i];
square[5][i] = tmp;
}
}
else {
for (int i = 1; i <= 3; i++) {
tmp = square[3][i];
square[3][i] = square[5][i];
square[5][i] = square[4][i];
square[4][i] = square[6][i];
square[6][i] = tmp;
}
}
}
else if (tmp1 == 'D') {
if (tmp2 == '+') {
for (int i = 7; i <= 9; i++) {
tmp = square[3][i];
square[3][i] = square[5][i];
square[5][i] = square[4][i];
square[4][i] = square[6][i];
square[6][i] = tmp;
}
}
else {
for (int i = 7; i <= 9; i++) {
tmp = square[3][i];
square[3][i] = square[6][i];
square[6][i] = square[4][i];
square[4][i] = square[5][i];
square[5][i] = tmp;
}
}
}
else if (tmp1 == 'F') {
if (tmp2 == '+') {
tmp = square[1][7];
square[1][7] = square[5][9];
square[5][9] = square[2][3];
square[2][3] = square[6][1];
square[6][1] = tmp;
tmp = square[1][8];
square[1][8] = square[5][6];
square[5][6] = square[2][2];
square[2][2] = square[6][4];
square[6][4] = tmp;
tmp = square[1][9];
square[1][9] = square[5][3];
square[5][3] = square[2][1];
square[2][1] = square[6][7];
square[6][7] = tmp;
}
else {
tmp = square[1][7];
square[1][7] = square[6][1];
square[6][1] = square[2][3];
square[2][3] = square[5][9];
square[5][9] = tmp;
tmp = square[1][8];
square[1][8] = square[6][4];
square[6][4] = square[2][2];
square[2][2] = square[5][6];
square[5][6] = tmp;
tmp = square[1][9];
square[1][9] = square[6][7];
square[6][7] = square[2][1];
square[2][1] = square[5][3];
square[5][3] = tmp;
}
}
else if (tmp1 == 'B') {
if (tmp2 == '+') {
tmp = square[1][1];
square[1][1] = square[6][3];
square[6][3] = square[2][9];
square[2][9] = square[5][7];
square[5][7] = tmp;
tmp = square[1][2];
square[1][2] = square[6][6];
square[6][6] = square[2][8];
square[2][8] = square[5][4];
square[5][4] = tmp;
tmp = square[1][3];
square[1][3] = square[6][9];
square[6][9] = square[2][7];
square[2][7] = square[5][1];
square[5][1] = tmp;
}
else {
tmp = square[1][1];
square[1][1] = square[5][7];
square[5][7] = square[2][9];
square[2][9] = square[6][3];
square[6][3] = tmp;
tmp = square[1][2];
square[1][2] = square[5][4];
square[5][4] = square[2][8];
square[2][8] = square[6][6];
square[6][6] = tmp;
tmp = square[1][3];
square[1][3] = square[5][1];
square[5][1] = square[2][7];
square[2][7] = square[6][9];
square[6][9] = tmp;
}
}
else if (tmp1 == 'L') {
if (tmp2 == '+') {
tmp = square[1][1];
square[1][1] = square[4][9];
square[4][9] = square[2][1];
square[2][1] = square[3][1];
square[3][1] = tmp;
tmp = square[1][4];
square[1][4] = square[4][6];
square[4][6] = square[2][4];
square[2][4] = square[3][4];
square[3][4] = tmp;
tmp = square[1][7];
square[1][7] = square[4][3];
square[4][3] = square[2][7];
square[2][7] = square[3][7];
square[3][7] = tmp;
}
else {
tmp = square[1][1];
square[1][1] = square[3][1];
square[3][1] = square[2][1];
square[2][1] = square[4][9];
square[4][9] = tmp;
tmp = square[1][4];
square[1][4] = square[3][4];
square[3][4] = square[2][4];
square[2][4] = square[4][6];
square[4][6] = tmp;
tmp = square[1][7];
square[1][7] = square[3][7];
square[3][7] = square[2][7];
square[2][7] = square[4][3];
square[4][3] = tmp;
}
}
else if (tmp1 == 'R') {
if (tmp2 == '+') {
tmp = square[1][3];
square[1][3] = square[3][3];
square[3][3] = square[2][3];
square[2][3] = square[4][7];
square[4][7] = tmp;
tmp = square[1][6];
square[1][6] = square[3][6];
square[3][6] = square[2][6];
square[2][6] = square[4][4];
square[4][4] = tmp;
tmp = square[1][9];
square[1][9] = square[3][9];
square[3][9] = square[2][9];
square[2][9] = square[4][1];
square[4][1] = tmp;
}
else {
tmp = square[1][3];
square[1][3] = square[4][7];
square[4][7] = square[2][3];
square[2][3] = square[3][3];
square[3][3] = tmp;
tmp = square[1][6];
square[1][6] = square[4][4];
square[4][4] = square[2][6];
square[2][6] = square[3][6];
square[3][6] = tmp;
tmp = square[1][9];
square[1][9] = square[4][1];
square[4][1] = square[2][9];
square[2][9] = square[3][9];
square[3][9] = tmp;
}
}
change(tmp1, tmp2);
}
int main() {
//freopen("in1.txt", "rt", stdin);
cin >> n;
while (n-- > 0) {
for (int i = 1; i <= 9; i++) square[1][i] = 'w';
for (int i = 1; i <= 9; i++) square[2][i] = 'y';
for (int i = 1; i <= 9; i++) square[3][i] = 'r';
for (int i = 1; i <= 9; i++) square[4][i] = 'o';
for (int i = 1; i <= 9; i++) square[5][i] = 'g';
for (int i = 1; i <= 9; i++) square[6][i] = 'b';
cin >> k;
for (int i = 0; i < k; i++) {
cin >> ch;
go();
}
for (int i = 1; i <= 9; i++) {
cout << square[1][i];
if (i % 3 == 0) cout << '\n';
}
}
return 0;
}