internal static void initFlipSym2Raw() { CubieCube c = new CubieCube(); CubieCube d = new CubieCube(); int count = 0; FlipR2S = new char[2048]; for (int i = 0; i < 2048; i++) { if (FlipR2S[i] != 0) { continue; } c.setFlip(i); for (int s = 0; s < 16; s += 2) { EdgeConjugate(c, s, d); int idx = d.getFlip(); if (idx == i) { SymStateFlip[count] |= (char)(1 << (s >> 1)); } FlipR2S[idx] = (char)(count << 3 | s >> 1); if (Search.USE_TWIST_FLIP_PRUN) { FlipS2RF[count << 3 | s >> 1] = (char)idx; } } FlipS2R[count++] = (char)i; } if (count != 336) { throw new Exception("Unexpected count value"); } }
protected static void initFlipMove() { CubieCube c = new CubieCube(); CubieCube d = new CubieCube(); for (int i = 0; i < N_FLIP_SYM; i++) { c.setFlip(CubieCube.FlipS2R[i]); for (int j = 0; j < N_MOVES; j++) { CubieCube.EdgeMult(c, CubieCube.moveCube[j], d); FlipMove[i, j] = (char)d.getFlipSym(); } } }