示例#1
0
        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");
            }
        }
示例#2
0
        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();
                }
            }
        }