Ejemplo n.º 1
0
        private void RotateIncorrectSideEdgeToBack()
        {
            var incorrectEdge = _cube.GetSideEdges().First(b => !RubixCubeStatusEvaluator.EdgeIsInCorrectPosition(b));
            var sides         = incorrectEdge.GetNonNullSides();

            if (sides.Contains(Side.Top) && sides.Contains(Side.Left))
            {
                PerformRightSwitch(Side.Left, Side.Top);
            }

            if (sides.Contains(Side.Right) && sides.Contains(Side.Top))
            {
                PerformRightSwitch(Side.Top, Side.Right);
            }

            if (sides.Contains(Side.Bottom) && sides.Contains(Side.Right))
            {
                PerformRightSwitch(Side.Right, Side.Bottom);
            }

            if (sides.Contains(Side.Left) && sides.Contains(Side.Bottom))
            {
                PerformRightSwitch(Side.Bottom, Side.Left);
            }
        }
Ejemplo n.º 2
0
        private void FormCross()
        {
            while (!RubixCubeStatusEvaluator.CrossIsFormed(_cube, Side.Front))
            {
                var backEdges = _cube.GetBackEdges().Where(b => b.HasColour(Colour.White)).ToList();
                if (backEdges.Any())
                {
                    var backEdge = backEdges.First();
                    SolveBackEdge(backEdge);
                }

                var frontEdge = GetAnIncorrectFrontEdge();
                if (frontEdge != null)
                {
                    RotateFrontEdgeToBack(frontEdge);
                }

                var sideEdges = _cube.GetSideEdges().Where(b => b.HasColour(Colour.White)).ToList();
                if (sideEdges.Any())
                {
                    var sideEdge = sideEdges.First();
                    RotateSideEdgeToBack(sideEdge);
                }
            }
        }