// UVa 253 - Cube painting
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
#define max_c 6
int cond[max_c][4] = { { 5, 4, 2, 3 }, { 1, 4, 6, 3 }, { 1, 2, 6, 5 }, { 1, 5, 6, 2 }, { 1, 3, 6, 4 }, { 2, 4, 5, 3 } };
int main() {
string line;
while (cin >> line) {
string sol = "TRUE";
string a = line.substr(0, 6);
a = " " + a;
string b = line.substr(6);
b = " " + b;
string c_def[max_c], d_def[max_c];
for (int i = 0; i < max_c; i++) {
string c = "", d = "";
for (int j = 0; j < 4; j++) {
c = c + a[cond[i][j]];
d = d + b[cond[i][j]];
}
string mc = c, md = d;
for (int j = 0; j < 4; j++) {
c = c.substr(1) + c[0];
if (c < mc)
mc = c;
d = d.substr(1) + d[0];
if (d < md)
md = d;
}
c_def[i] = mc;
d_def[i] = md;
}
bool yet[max_c];
memset(yet, true, sizeof(yet));
for (int i = 0; i < max_c; i++) {
bool found = false;
for (int j = 0; j < max_c; j++)
if (c_def[i] == d_def[j] && yet[j]) {
yet[j] = false;
found = true;
break;
}
if (!found) {
sol = "FALSE";
break;
}
}
cout << sol << endl;
}
return 0;
}
Sunday, June 7, 2015
UVa 253 - Cube painting
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment