public static bool CrossIsFormed(RubixCube cube, Side side) { var face = cube.GetFace(side); return(CrossFaceIsFormed(cube, side) && CenterEdgeBlockFacesAreSolved(face, side) && CentreBlocksAreOnCorrectFaces(cube)); }
public static bool SecondLayerIsSolved(RubixCube cube) { return(FirstLayerIsSolved(cube) && MiddleLayerFacesAreSolved(cube, Side.Left) && MiddleLayerFacesAreSolved(cube, Side.Right) && MiddleLayerFacesAreSolved(cube, Side.Top) && MiddleLayerFacesAreSolved(cube, Side.Bottom)); }
private static bool CentreBlocksAreOnCorrectFaces(RubixCube cube) { return(cube.GetCenterBlockFace(Side.Front) == Colour.White && cube.GetCenterBlockFace(Side.Top) == Colour.Green && cube.GetCenterBlockFace(Side.Back) == Colour.Yellow && cube.GetCenterBlockFace(Side.Bottom) == Colour.Blue && cube.GetCenterBlockFace(Side.Left) == Colour.Red && cube.GetCenterBlockFace(Side.Right) == Colour.Orange); }
public static bool CrossFaceIsFormed(RubixCube cube, Side side) { var face = cube.GetFace(side); return(SideIsCorrectColour(side, face[0, 1]) && SideIsCorrectColour(side, face[1, 0]) && SideIsCorrectColour(side, face[1, 2]) && SideIsCorrectColour(side, face[2, 1])); }
public static bool FirstLayerIsSolved(RubixCube cube) { return(CubeFaceIsSolved(cube, Side.Front) && CentreBlocksAreOnCorrectFaces(cube) && BottomLayerFacesAreSolved(cube, Side.Left) && BottomLayerFacesAreSolved(cube, Side.Right) && BottomLayerFacesAreSolved(cube, Side.Top) && BottomLayerFacesAreSolved(cube, Side.Bottom)); }
private static void SolveRubixCube(Options opts) { var cube = GetParsedCube(opts); var rubixCube = new RubixCube(cube); var solver = new RubixCubeSolver(rubixCube); solver.Solve(); using var file = new StreamWriter(opts.OutputPath); foreach (var(num, direction, side) in rubixCube.Instructions) { file.WriteLine($"{num} - {direction}: {side}"); } }
private static void PrintFace(RubixCube cube, Side side) { var face = cube.GetFace(side); for (var row = 0; row < 3; row++) { Console.Write(" "); // hack to indent top and bottom faces PrintColour(cube.GetColour(face[row, 0], side)); Console.Write(" "); PrintColour(cube.GetColour(face[row, 1], side)); Console.Write(" "); PrintColour(cube.GetColour(face[row, 2], side)); Console.WriteLine(); Console.WriteLine(); } }
private static void PrintFaces(RubixCube cube) { for (var row = 0; row < 3; row++) { var left = cube.GetFace(Side.Left); PrintColour(cube.GetColour(left[row, 0], Side.Left)); Console.Write(" "); PrintColour(cube.GetColour(left[row, 1], Side.Left)); Console.Write(" "); PrintColour(cube.GetColour(left[row, 2], Side.Left)); Console.Write(" "); var front = cube.GetFace(Side.Front); PrintColour(cube.GetColour(front[row, 0], Side.Front)); Console.Write(" "); PrintColour(cube.GetColour(front[row, 1], Side.Front)); Console.Write(" "); PrintColour(cube.GetColour(front[row, 2], Side.Front)); Console.Write(" "); var right = cube.GetFace(Side.Right); PrintColour(cube.GetColour(right[row, 0], Side.Right)); Console.Write(" "); PrintColour(cube.GetColour(right[row, 1], Side.Right)); Console.Write(" "); PrintColour(cube.GetColour(right[row, 2], Side.Right)); Console.Write(" "); var back = cube.GetFace(Side.Back); PrintColour(cube.GetColour(back[row, 0], Side.Back)); Console.Write(" "); PrintColour(cube.GetColour(back[row, 1], Side.Back)); Console.Write(" "); PrintColour(cube.GetColour(back[row, 2], Side.Back)); Console.WriteLine(); Console.WriteLine(); } }
public static void Print(RubixCube cube) { PrintFace(cube, Side.Top); PrintFaces(cube); PrintFace(cube, Side.Bottom); }
public static bool ThirdLayerIsSolved(RubixCube cube) { return(((Side[])Enum.GetValues(typeof(Side))).All(side => CubeFaceIsSolved(cube, side))); }
private static bool BottomLayerFacesAreSolved(RubixCube cube, Side side) { var blocks = cube.GetBottomLayer(side); return(BlockFacesAreSolved(side, blocks)); }
private static bool CubeFaceIsSolved(RubixCube cube, Side side) { var face = cube.GetFace(side); return(BlockFacesAreSolved(side, face.Cast <Block>())); }