internal static void initUDSliceFlipSym2Raw() { CubieCube c = new CubieCube(); CubieCube d = new CubieCube(); int[] occ = new int[2048 * 495 >> 5]; int count = 0; for (int i = 0; i < 2048 * 495; i++) { if ((occ[i >> 5] & 1 << (i & 0x1f)) != 0) { continue; } c.setUDSliceFlip(i); for (int s = 0; s < 16; s++) { EdgeConjugate(c, s, d); int idx = d.getUDSliceFlip(); if (idx == i) { SymStateUDSliceFlip[count] |= (char)(1 << s); } occ[idx >> 5] |= 1 << (idx & 0x1f); int fidx = Array.BinarySearch(FlipS2R, (char)(idx & 0x7ff)); if (fidx >= 0) { FlipSlice2UDSliceFlip[fidx * CoordCube.N_SLICE + (idx >> 11)] = count << 4 | s; } } UDSliceFlipS2R[count++] = i; } if (count != 64430) { throw new Exception("Unexpected count value"); } }