Generalized Rubik's Cube.
This implementation assumes that you are familiar with large Rubik's Cube notation.
Examples:
l - turn the left face clockwise (as if you were looking at it) once (i.e. 90 degrees)
u' - turn the up (aka top) face counterclockwise once
r2 - turn the right face clockwise twice (i.e. 180 degrees)
2f - turn the first two layers on the front side clockwise
2B - turn the second layer in from the back side clockwise
3D'2 - turn the third layer in from the down (aka bottom) side counterclockwise twice
l u' r2 2f 2B 3D'2 - perform the actions mentioned above in sequence
Check out http://w.astro.berkeley.edu/~converse/rubiks.php?id1=basics&id2=largenotation for a more detailed explanation.
Run in terminal with dark background to see colors.