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