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));
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); }