CubeState
был склонен генерировать выходные данные, которые начинались с / 0, то есть (char)0
.Это вызвало проблему - возвращаемые строки считались пустыми.Позже я открою еще один вопрос по этому поводу, как только у меня будет соответствующий фрагмент кода, который должным образом продемонстрирует мою обеспокоенность.Если вы все еще заинтересованы в содержании CubeState.getContent()
- вот оно
class CubeState {
private:
state = {
0, 1, 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26
};
const int av[] = { 0, 0, 1, 1, 0, 2, 2, 3, 3, 4, 0, 5, 0, 0, 0, 6, 0, 7, 4, 8, 5, 9, 0, 10, 6, 11, 7 },
corners[] = { 0, 2, 6, 8, 18, 20, 24, 26 },
sides[] = { 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 };
...
std::string getContent() {
std::bitset<80> container(0);
for (int i = 0; i < 8; i++) {
int temp = av[state[corners[i]]];
container[i * 3] = temp % 2;
temp >>= 1;
container[i * 3 + 1] = temp % 2;
temp >>= 1;
container[i * 3 + 2] = temp;
}
for (int i = 0; i < 12; i++) {
int temp = av[state[sides[i]]];
container[i * 4 + 24] = temp % 2;
temp >>= 1;
container[i * 4 + 25] = temp % 2;
temp >>= 1;
container[i * 4 + 26] = temp % 2;
temp >>= 1;
container[i * 4 + 27] = temp;
}
int temp = parent;
container[72] = temp % 2;
temp >>= 1;
container[73] = temp % 2;
temp >>= 1;
container[74] = temp % 2;
temp >>= 1;
container[75] = temp;
std::string result;
for (int i = 0; i < 10; i++)
result += std::bitset<8>(container.to_string().substr(i, i * 8)).to_ulong() + 1;
return result;
}