Run: >>digrub
This program allows you to generate a randomly scramble cube of arbitrary dimension which can then be manipulated manually or solved by the computer. You can also input your own state using a webcam (3x3x3), or simply enter the colors of each facelet (2,3,4x.x.).
There are several builtin solving mechanisms available:
 God's Algorithm for the 2x2x2: this is the optimal solution for the given state (in halfturn metric).
 Thistlethwaite 45 (T45) for the 3x3x3: this algorithm will always find a solution of 45 moves or less, averaging at 31.
 LayerbyLayer (Beginners') Solution: this is the method commonly used by beginners to solve the cube. More intuitive than T45, but also more extensive and less effective.
 423T45 for the 4x4x4 (read 4 to 3, T45): this algorithm brings the cube to a state which can be handled like it was a 3x3x3 cube. When this is achieved, T45 can be applied to solve it (~180 moves on avg).
 Inverse Scramble for all cubes: it is like cheating, but when the scramble is known, each cube can be solved by inversing the sequence.
All of the above methods (with exception of the inverse scramble, which is trivial) are explained extensively in the included PDF. The PDF also contains a vast theoretical description of the cube.
DESCRIPTION OF INCLUDED FUNCTIONS/FILES:
algrot.m  calculates how an algorithm changes under rotation of the cube.
digrub.fig  GUI figure main program
digrub.m  GUIDEgenerated mfile to go with digrub.fig.
editstate.fig  GUI figure for manual input program
editstate.m  GUIDEgenerated mfile to go with editstate.fig.
findpeeks.m  Peekfinder that is used to find the cube's position in a webcam image.
GetCorners.m  calculates the corner permutation/orientation of a given 3x3x3 cube.
GetCorners2.m  calculates the corner permutation/orientation of a given 2x2x2 cube.
GetEdges.m  calculates the edge permutation/orientation of a given 3x3x3 cube.
GetFacelets.m  converts a state in the orientation/permutation representation to the facelet repr.
Ind2State.m  converts an index to a state
move2rub.m  converts a move of the form 'x11' to Rubik's Code 'B'.
parity.m  calculates the parity of a permutation.
rub2move.m  converts a move in Rubik's code to axile 'x11' form.
rubcheck.m  checks the validity of a 2x2x2 or 3x3x3 state.
rubcross.m  searches for a cross on the cube.
rubgen.m  generates a cube
rubinfo.m  returns information about the cube state
rubopt.m  optimizes a movesequence
ruborient.m  orients the cube
rubplot.m  plot a 3D image of the cube
rubrot.m  apply a move to the cube
rubrot2.m  rotate the entire cube
rubsolve.m  solve the cube using a layer by layer approach
Solve45.m  solve the cube using T45
Solve222.m  find God's Algorithm to a 2x2x2 cube
Solve444.m  find a solution to any 4x4x4 cube.
Thanks for downloading! All feedback is appreciated!
jorenheit[at]gmail.com
