Welcome to My Final Project

The goal of this project was to combine a system of notation for talking about the Cube, with a way of visually applying to a Cube. The idea is that this program can be used to help you solve the cube better, by allowing you to develop new sets of moves. The notation can be applied to the cube quickly, thus allowing you too look at your changes, without the hassle of actually messing up a physical Cube. Neat huh?

There are three parts to the Rubik's Cube page, one is the Cube itself, one is the Faces applet, and then at the bottom there is the Notation applet. Since the Notation is the important part, I'll go into it first.


Notation Editor Instructions
General use:

I used the standard Singmaster notation which is composed of the following commands:

f rotate the front face clockwise
b rotate the back face clockwise
l rotate the left face clockwise
r rotate the right face clockwise
u rotate the up face clockwise
d rotate the down face clockwise

Thus if you were to type:

rr
the right face would be rotated clockwise twice. Clockwise for each face is determined by looking at that face. Thus clockwise on the front face is counter-clockwise for the back face.

F rotate the cube around the front face clockwise
B rotate the cube around the back face clockwise
L rotate the cube around the left face clockwise
R rotate the cube around the right face clockwise
U rotate the cube around the up face clockwise
D rotate the cube around the down face clockwise

The capital letters mean to rotate the entire cube under the face entered. This changes what the face specified by the lower case commands moves.
For Example:

When you start the program there is a color for each face. In this case the green face is the front, the blue face is the right, and the red face is the up face. If you were to type: U then the faces would change by a clockwise rotation of the cube under the up face. This means that the up face remains red colored, but instead the front face becomes the blue face, the right face becomes the yellow face, the back face becomes the white face and the left face becomes the green face. (A clockwise rotation of those faces.) The down face remains unchanged as well. Thus if you were to type: Ur into the command line, you would see the yellow face rotate clockwise.


The Faces Applet
The purpose of the applet with the 6 squares is to keep track of which face is which for you. So if you do a move like U and can't remember which face is which, you can look at this applet. It will tell you which colored face will be rotated by which lower case letter move.

Note- the color of a face is determined by looking at the center cube on that face, since the center cubes never move in relation to one another, nor do they change places.


Now that you understand how to move the faces let's make things complex. First of all you can use parenthesis. So (Ur) and Ur and (U)(r) and (U(r)), etc. are all the same thing.

Now comes exponentiation. Exponentiation is done by using the ^ symbol. (That should be shift-6 on most keyboards.) Exponentiation can do a number of different things. For instance r^2 means do r twice, or rr. (ur)^2 means (ur)(ur) or urur. Thus exponentiation to a positive exponent means repeat exponent times.

However, exponentiation to a negative exponent is also allowed. r^-1 means turn the right face counter-clockwise. Note that on the Cube, r^-1 is the same as r^3 or rrr. This of course means that r^-2 means the same thing as r^2, both mean turn the right face twice, and on the cube two turns in one direction is the same as two turns in the other direction.

Negative exponentiation for a set of commands in parenthesis is even more complicated. (ur)^-1 does not mean u^-1r^-1, in fact negative exponentiation means you must reverse the order of the commands as well as their direction. Thus: (ur)^-1 means the same as r^-1u^-1. This is and important feature because it means that (ur)(ur)^-1 actually doesn't change anything, since it translates to urr^-1u^-1.

Note- I'm now going to use the shorthand command+ to mean command, and command- to mean command^-1 i.e. r+ means r, and r- means r^-1. This is how the computer outputs the translation, however this notation cannot be used to input commands.

The ^ is an overloaded symbol, which means that it does more than just exponentiation. It you have a command exponent integer, than the program does exponentiation, however, if you have a command exponent symbol command, than the exponentiation symbol becomes the conjugate symbol. Conjugation means the following: r^b becomes brb^-1, i.e. conjugation in general is, x^y means xyx^-1, and thus (ur)^(dl) becomes (dl)(ur)(dl)^-1 or d+l+u+r+l-d-.

Well, there is only one command left to go. Commutation. The commutator is made up of [,]. It works in the following: [u,r] means uru^-1r^-1 or in general [x,y] means xyx^-1y^-1.

Now all of the above commands can be combined in different ways, thus you could do something like [u,l^(fd)]^-1 which becomes f+d+l+d-f-u+f+d+l-d-f-u- (But that's not obvious. Try it and see.)

Here's an example I came up with randomly that turns out to be a really neat move, try it and see: (r^b[l,u^b]r^b)^4

You now know all the symbols.

() parenthesis
^ exponentation or conjugation
[,] commutator

Variables

As well the all of the above commands the Notation applet supports the use of variables. You can have up to 50 one letter variables. Legal variable names are anything that is not a reserved character from above. To declare a variable, use a character followed immediately by and '=' (without quotes) and then the value.

For example;

y=r^3b

Now you can use y as if it were one of the moves from above, such as y^2, or y^u, etc. After you type in a variable declaration, if it is legal, it will be added to the variables box, so that you can see it if you forget what it stands for. As well you can assign variables to other previously declared variables, i.e x=y^-1. However you can't do x=j, since j hasn't been defined.

Note- spaces can be used in the Notation editor, and are ignored, however a space before a variable name declaration, or the equals sign won't work (i.e x = doesn't work, but x= does).


The Rubik's Cube
The Rubik's Cube applet comes from HERE and was originally written by Geert-Jan van Opdorp

The commands on the cube are simple. The mouse can rotate the cube in the x and y directions, it takes a little while to get used to. If you click on the Cube and then press space bar the cube should scramble itself. If you press the Shift button and then click on a face of the Cube, that face will rotate clockwise. If you press Control and then click on a face that face will rotate counter-clockwise. Note that for some reason, these moves are really slow on my version of the applet. (I made a few alterations to his program, but not many.)


This should cover all of the necessary instructions on how to use the Notation applet and Rubik's Cube. If you have anymore questions, or think this page needs further clarification, please email me.


By Justin Campbell
email: jmc@rahul.net