private void SolveCorners() { while (!RubixCubeStatusEvaluator.FirstLayerIsSolved(_cube)) { var frontCorners = _cube.GetFrontCornerBlocks().Where(c => !c.IsCorrectlyPositioned()).ToList(); if (frontCorners.Select(c => c.Block.HasColour(Colour.White)).Any()) { var corner = frontCorners.First(); RotateCornerToBack(corner); } var backCorners = _cube.GetBackCornerBlocks().Where(c => c.IsCorrectlyPositioned()).ToList(); if (backCorners.Select(c => c.Block.HasColour(Colour.White)).Any()) { var corner = backCorners.First(); RotateCornerToFront(corner); } else { _cube.RotateClockwise(Side.Back); } } }