# Do we have a List of 3x3x3 (Programming) Algorithms?



## geocine (Nov 10, 2012)

Hi I am not sure where to post this so I am posting it here. Do we have a list of 3x3x3 (programming) Algorithms. I explicitly cited 'Programming' because this could be easily misunderstood as a collection of 3x3x3 move notations.

For example, sorting has different algorithms. We do have bubble sort, insertion sort, shell sort, radix sort (the list goes on). 

I am not a math wizard but I do understand math and I could implement (programming) algorithms as how they are explained using my programming language of choice. I believe having a list of these will help us (non math wiz) programmers to implement these (programming) algorithms, discover , simulate and generate (notation) algorithms or use them as we wish.

Has anyone written a library to compute/generate CFOP algorithms from a given case. What I would like to accomplish is to create an OLL tree / PLL tree with the use of programming.

Example:

OLL 1 + OLL 2 = OLL 3

This means executing OLL 1 followed by OLL 2 is equivalent to executing OLL 3 and so on. If you have idea how to do this please direct me to a resource.


----------



## cuBerBruce (Nov 10, 2012)

I am not totally clear what you're trying to accomplish. From your OLL example, it sounds like it may be somewhat similar to what kirjava has done in the project that he has been talking about in the [thread=36791]"Developing a better LL system"[/thread] thread.

As for your OLL example, I note that different OLL maneuvers for the same OLL case can have different permutation effects. This means if you want to talk about what "OLL 1 + OLL 2" produces, you must talk about specific OLL maneuvers, not merely OLL cases. (Or you at least need specify to specify the permutation effect.) Rotating the cube (or a U layer turn) in between will also generally result in different effects.

There is some existing software such as ACube that can help generate maneuvers for CFOP cases, if that's what you're looking for.

There is a programming language/environment called GAP that can be useful. The effect of any cube maneuver can be described as a permutation, and GAP has built-in data type for describing permutations and combining them using the multiplication operator.


----------



## geocine (Nov 11, 2012)

Thanks for the heads up. I think I will be able to explain myself more using a simple OLL (progression) diagram I did in the past. I am thinking of linking/chaining related OLL's together. I am aware this is not optimal but would definitely help others who does not memorize yet the full OLL cases.







For this cases, I am not really concerned with the permutation. I am just concerned with the LL orientation. I am still exploring ACube and looking out to Statchuk's .NET port since I am more inclined in C#.

Does anyone started doing a list of these stuff , what I call as OLL trees?


----------



## cuBerBruce (Nov 12, 2012)

While you don't really care about the permutation, the permutation of a particular maneuver for an OLL case does affect what the resulting "OLL tree" will look like.

For example, for OLL 25 in the Wiki, either of the following (among several others) can be used to solve that case.
R U R' U R U' R' U R U' R' U R U2 R'
R' F' L' F R F' L F

If you use the first one, you get this "OLL tree": solved -> OL 25 -> solved.

If you use the second one, you get this "OLL tree": solved -> OLL 24 -> OLL 25 -> solved.

(The OLL 24 position in the above is actually rotated 180 degrees from the diagrammed orientation in the Wiki.)

This proves that an OLL case does not in and of itself determine a particular "OLL tree." The reason the two maneuvers produce different "OLL trees" is because the two maneuvers have different permutation effects.


----------

