Esempio n. 1
0
        private static SolverTestCase MakeRandomCube(int numberOfMoves, int seed)
        {
            var random = new Random(seed);

            var moves = new List <Move>();

            for (var i = 0; i < numberOfMoves; i++)
            {
                var m = CreateMove(random, moves.Any() ? moves.Last() : null as Move?);
                moves.Add(m);
            }

            var c = SolvedCube.Instance.Clone();

            foreach (var moveEnum in moves)
            {
                var m = MoveCubes.BasicCubesByMove[moveEnum];
                c.Multiply(m);
            }

            var reverseMoves = moves.Select(x => x.Inverse()).Reverse().ToList();

            var name = $"({moves.Count})-{Solution.CreateName(reverseMoves, Orientation.Default)}";

            var finalCube = new NamedCubieCube(name, c);


            return(new SolverTestCase(finalCube));
Esempio n. 2
0
        private static IReadOnlyDictionary <Move, ICubieCube> GetMoveCubes()
        {
            var table = new Dictionary <Move, ICubieCube>();

            foreach (var moveEnum in Extensions.GetEnumValues <Move>())
            {
                var(color, number) = moveEnum.Deconstruct();

                var cc = SolvedCube.Instance.Clone();

                for (var i = 0; i < number; i++)
                {
                    cc.Multiply(BasicCubesByColor[color]);
                }

                table[moveEnum] = new NamedCubieCube(moveEnum.GetDisplayName(), cc);
            }

            return(table);
        }