# 4x4 Optimal Solver v2



## clement (Apr 16, 2009)

Hi everyone

Recently I worked again on my 4x4 optimal solver for it to be easier to use.
Here it is : http://perso.ens-lyon.fr/clement.gallet/optimal444.zip

Sorry for (almost) all windows users, it uses special librairies (ext/hash_set). Maybe someone could compile it to work on Windows, I can't do it myself.

When launching the program (after compiling), it first asks for the description of the cube, sticker by sticker. After it asks if you want to forbid moves. Then it starts the research, by length of the solutions increasing.

The pre-computation consists of storing every position around the solved state into an hash set. So the main parameter to configure before compilation is the maximum distance of those positions. The thing is that this distance is limited by the memory of your computer, and by the moves that you will forbid for the search.
This parameter is QUEUE_DEPTH in the main.h file.

For exemple, for my computer (500 Mo) without forbidding moves, the maximum distance is 4, but if I limit in <r, l, U2, D2, F2, B2, R2, L2>, I can put a distance of 7 which will allow a faster search.

If you put a too high number, you will just have an error 


The program consider that the corner DBL is always solved, so it will print solutions with those moves : Uud, Ffb and Rrl instead of D, B and L.
Uud means U u d', Uud' means U' u' d, etc.
One of my TODO is to print in the usual way.

An exemple of the speed of the program, with my quite old computer (Pentium M 1.6 GHz, 500 Mo), I found all 15 moves solutions for the OLL parity in about 30 minutes into the sub-group <r, l, U2, D2, F2, B2, R2, L2> :

F2 r Uud2 r' Ffb2 l Ffb2 l2 Uud2 r' Uud2 l Uud2 F2 r2(15)
F2 r Uud2 l' Uud2 l Uud2 r2 Ffb2 r' Ffb2 r Uud2 F2 r2(15)
F2 l Ffb2 r' U2 r U2 r2 F2 r' Uud2 r Uud2 Ffb2 l2(15)
F2 l Ffb2 r' U2 r U2 l2 Ffb2 l' Uud2 l Uud2 F2 r2(15)
F2 l Ffb2 l' Ffb2 r Uud2 r2 Ffb2 r' Ffb2 r Uud2 F2 r2(15)
F2 r2 F2 U2 r U2 r' U2 r2 F2 l F2 l' U2 r(15)
F2 r2 F2 U2 r U2 l' Ffb2 l2 Uud2 l Uud2 r' Ffb2 l(15)
F2 r2 F2 U2 l F2 r' F2 l2 U2 l U2 r' U2 r(15)
F2 r2 Ffb2 U2 r' U2 l F2 l2 Uud2 r' Uud2 l Ffb2 r'(15)
F2 l2 F2 U2 r' F2 l F2 r2 U2 l' Ffb2 r Ffb2 r'(15)
F2 l2 F2 U2 l' U2 r Ffb2 r2 Uud2 r' Uud2 l Ffb2 r'(15)
F2 l2 F2 U2 l' U2 l U2 l2 F2 r' F2 r U2 l'(15)
F2 l2 Ffb2 U2 l U2 r' F2 r2 Uud2 l Uud2 r' Ffb2 l(15)
F2 r' Ffb2 r Ffb2 l' Uud2 l2 Ffb2 l Ffb2 l' Uud2 F2 l2(15)
F2 r' Ffb2 l U2 l' U2 r2 Ffb2 r Uud2 r' Uud2 F2 l2(15)
F2 r' Ffb2 l U2 l' U2 l2 F2 l Uud2 l' Uud2 Ffb2 r2(15)
F2 l' Uud2 r Uud2 r' Uud2 l2 Ffb2 l Ffb2 l' Uud2 F2 l2(15)
F2 l' Uud2 l Ffb2 r' Ffb2 r2 Uud2 l Uud2 r' Uud2 F2 l2(15)
U2 r Uud2 r' Uud2 l Ffb2 l2 Uud2 l' Uud2 l Ffb2 U2 l2(15)
U2 r Uud2 l' F2 l F2 r2 Uud2 r' Ffb2 r Ffb2 U2 l2(15)
U2 r Uud2 l' F2 l F2 l2 U2 l' Ffb2 l Ffb2 Uud2 r2(15)
U2 l Ffb2 r' Ffb2 r Ffb2 l2 Uud2 l' Uud2 l Ffb2 U2 l2(15)
U2 l Ffb2 l' Uud2 r Uud2 r2 Ffb2 l' Ffb2 r Ffb2 U2 l2(15)
U2 r2 U2 F2 r' F2 r F2 r2 U2 l' U2 l F2 r'(15)
U2 r2 U2 F2 r' F2 l Uud2 l2 Ffb2 l' Ffb2 r Uud2 l'(15)
U2 r2 U2 F2 l' U2 r U2 l2 F2 l' F2 r F2 r'(15)
U2 r2 Uud2 F2 r F2 l' U2 l2 Ffb2 r Ffb2 l' Uud2 r(15)
U2 l2 U2 F2 r U2 l' U2 r2 F2 l Uud2 r' Uud2 r(15)
U2 l2 U2 F2 l F2 r' Uud2 r2 Ffb2 r Ffb2 l' Uud2 r(15)
U2 l2 U2 F2 l F2 l' F2 l2 U2 r U2 r' F2 l(15)
U2 l2 Uud2 F2 l' F2 r U2 r2 Ffb2 l' Ffb2 r Uud2 l'(15)
U2 r' Ffb2 r Uud2 l' Uud2 l2 Ffb2 r Ffb2 l' Ffb2 U2 r2(15)
U2 r' Ffb2 l Ffb2 l' Ffb2 r2 Uud2 r Uud2 r' Ffb2 U2 r2(15)
U2 l' Uud2 r F2 r' F2 r2 U2 r Ffb2 r' Ffb2 Uud2 l2(15)
U2 l' Uud2 r F2 r' F2 l2 Uud2 l Ffb2 l' Ffb2 U2 r2(15)
U2 l' Uud2 l Uud2 r' Ffb2 r2 Uud2 r Uud2 r' Ffb2 U2 r2(15)
r F2 r' F2 l F2 l2 U2 r' U2 l F2 U2 r2 U2(15)
r F2 r' F2 l Ffb2 l2 Ffb2 Uud2 r F2 l' F2 r2 Uud2(15)
r F2 l' U2 l U2 r2 F2 r' F2 r F2 U2 r2 U2(15)
r Ffb2 r' Ffb2 l U2 r2 F2 l' F2 r U2 F2 l2 F2(15)
r Ffb2 r' Ffb2 l Uud2 r2 Uud2 Ffb2 l U2 r' U2 l2 Ffb2(15)
r Ffb2 l' Uud2 r U2 r2 Uud2 F2 r F2 l' U2 l2 Ffb2(15)
r Ffb2 l' Uud2 r U2 l2 U2 F2 l F2 r' Uud2 r2 Ffb2(15)
r Ffb2 l' Uud2 r Uud2 r2 Ffb2 r' U2 l U2 F2 l2 F2(15)
r Ffb2 l' Uud2 r Uud2 l2 F2 l' U2 r U2 Ffb2 r2 F2(15)
r Ffb2 l' Uud2 l F2 l2 F2 Uud2 r Uud2 l' Uud2 r2 Ffb2(15)
l U2 r' F2 r F2 l2 U2 l' U2 l U2 F2 l2 F2(15)
l U2 l' U2 r U2 r2 F2 l' F2 r U2 F2 l2 F2(15)
l U2 l' U2 r Uud2 r2 Uud2 Ffb2 l U2 r' U2 l2 Ffb2(15)
l Uud2 r' Ffb2 r U2 r2 U2 Ffb2 l Ffb2 r' Ffb2 l2 Uud2(15)
l Uud2 r' Ffb2 l F2 r2 F2 U2 r U2 l' Ffb2 l2 Uud2(15)
l Uud2 r' Ffb2 l F2 l2 Ffb2 U2 l U2 r' F2 r2 Uud2(15)
l Uud2 r' Ffb2 l Ffb2 r2 U2 r' F2 l F2 Uud2 l2 U2(15)
l Uud2 r' Ffb2 l Ffb2 l2 Uud2 l' F2 r F2 U2 r2 U2(15)
l Uud2 l' Uud2 r F2 l2 U2 r' U2 l F2 U2 r2 U2(15)
l Uud2 l' Uud2 r Ffb2 l2 Ffb2 Uud2 r F2 l' F2 r2 Uud2(15)
r2 F2 r F2 r' F2 Uud2 l2 Uud2 r' F2 l Uud2 r' Uud2(15)
r2 F2 r F2 l' F2 Uud2 r' Uud2 l Uud2 l' Uud2 F2 r2(15)
r2 F2 r F2 l' F2 Uud2 l' F2 r F2 r' Uud2 F2 r2(15)
r2 F2 l Uud2 r' Uud2 Ffb2 r' Ffb2 r Uud2 l' Uud2 F2 r2(15)
r2 F2 l Uud2 l' F2 U2 r' U2 l F2 r' Uud2 F2 r2(15)
r2 F2 l Uud2 l' Uud2 Ffb2 l2 Ffb2 l' F2 l Uud2 r' Uud2(15)
r2 F2 r' Ffb2 r Ffb2 Uud2 r Uud2 l' Uud2 l Uud2 F2 r2(15)
r2 F2 r' Ffb2 r Ffb2 Uud2 l Ffb2 l' Ffb2 r Uud2 F2 r2(15)
r2 F2 l' Uud2 r Uud2 F2 l F2 r' Uud2 l Uud2 F2 r2(15)
r2 F2 l' Uud2 l Ffb2 Uud2 r Uud2 r' Ffb2 r Uud2 F2 r2(15)
r2 F2 Uud2 r F2 r' F2 l Uud2 F2 l F2 r' F2 r2(15)
r2 F2 Uud2 r F2 l' U2 r U2 F2 l Uud2 l' F2 r2(15)
r2 F2 Uud2 l Uud2 r' Ffb2 r Ffb2 Uud2 r Uud2 l' F2 r2(15)
r2 F2 Uud2 l Uud2 l' Uud2 r Uud2 F2 l F2 r' F2 r2(15)
r2 F2 Uud2 r' Ffb2 r Ffb2 r2 Uud2 l' Uud2 l Uud2 r' F2(15)
r2 F2 Uud2 r' Ffb2 r Uud2 r' Uud2 Ffb2 l' Uud2 l F2 r2(15)
r2 F2 Uud2 r' Ffb2 l Ffb2 l' Uud2 Ffb2 r' Ffb2 r F2 r2(15)
r2 F2 Uud2 l' Uud2 r F2 l' F2 Uud2 r' Uud2 l F2 r2(15)
r2 F2 Uud2 l' Uud2 r Uud2 l2 Ffb2 l' Ffb2 r Uud2 r' F2(15)
r2 F2 Uud2 l' Uud2 l Ffb2 l2 U2 r' U2 r Ffb2 l' F2(15)
r2 F2 Uud2 l' Uud2 l Uud2 r' Uud2 Ffb2 r' Ffb2 r F2 r2(15)
r2 U2 r Uud2 r' Uud2 Ffb2 r' Ffb2 l Ffb2 l' Ffb2 U2 r2(15)
r2 U2 r Uud2 r' Uud2 Ffb2 l' Uud2 l Uud2 r' Ffb2 U2 r2(15)
r2 U2 l Ffb2 r' Ffb2 U2 l' U2 r Ffb2 l' Ffb2 U2 r2(15)
r2 U2 l Ffb2 l' Uud2 Ffb2 r' Ffb2 r Uud2 r' Ffb2 U2 r2(15)
r2 U2 r' U2 r U2 Ffb2 l2 Ffb2 r U2 l' Ffb2 r Ffb2(15)
r2 U2 r' U2 l U2 Ffb2 r Ffb2 l' Ffb2 l Ffb2 U2 r2(15)
r2 U2 r' U2 l U2 Ffb2 l U2 r' U2 r Ffb2 U2 r2(15)
r2 U2 l' Ffb2 r Ffb2 Uud2 r Uud2 r' Ffb2 l Ffb2 U2 r2(15)
r2 U2 l' Ffb2 l U2 F2 r F2 l' U2 r Ffb2 U2 r2(15)
r2 U2 l' Ffb2 l Ffb2 Uud2 l2 Uud2 l U2 l' Ffb2 r Ffb2(15)
r2 U2 Ffb2 r Uud2 r' Ffb2 r Ffb2 Uud2 l Ffb2 l' U2 r2(15)
r2 U2 Ffb2 r Uud2 r' Uud2 r2 Ffb2 l Ffb2 l' Ffb2 r U2(15)
r2 U2 Ffb2 r Uud2 l' Uud2 l Ffb2 Uud2 r Uud2 r' U2 r2(15)
r2 U2 Ffb2 l Ffb2 r' U2 l U2 Ffb2 r Ffb2 l' U2 r2(15)
r2 U2 Ffb2 l Ffb2 r' Ffb2 l2 Uud2 l Uud2 r' Ffb2 r U2(15)
r2 U2 Ffb2 l Ffb2 l' Ffb2 r Ffb2 Uud2 r Uud2 r' U2 r2(15)
r2 U2 Ffb2 l Ffb2 l' Uud2 l2 F2 r F2 r' Uud2 l U2(15)
r2 U2 Ffb2 r' U2 r U2 l' Ffb2 U2 l' U2 r U2 r2(15)
r2 U2 Ffb2 r' U2 l F2 r' F2 U2 l' Ffb2 l U2 r2(15)
r2 U2 Ffb2 l' Ffb2 r Uud2 r' Uud2 Ffb2 r' Ffb2 l U2 r2(15)
r2 U2 Ffb2 l' Ffb2 l Ffb2 r' Ffb2 U2 l' U2 r U2 r2(15)
r2 Ffb2 r F2 l' F2 Uud2 r' Uud2 l Uud2 l' Uud2 Ffb2 r2(15)
r2 Ffb2 r F2 l' F2 Uud2 l' F2 r F2 r' Uud2 Ffb2 r2(15)
r2 Ffb2 l Uud2 r' Uud2 Ffb2 r' Ffb2 r Uud2 l' Uud2 Ffb2 r2(15)
r2 Ffb2 l Uud2 l' F2 U2 r' U2 l F2 r' Uud2 Ffb2 r2(15)
r2 Ffb2 r' Ffb2 r Ffb2 Uud2 r Uud2 l' Uud2 l Uud2 Ffb2 r2(15)
r2 Ffb2 r' Ffb2 r Ffb2 Uud2 l Ffb2 l' Ffb2 r Uud2 Ffb2 r2(15)
r2 Ffb2 r' Ffb2 r Uud2 F2 r2 F2 l Ffb2 l' Ffb2 r Uud2(15)
r2 Ffb2 l' Uud2 r Uud2 F2 l F2 r' Uud2 l Uud2 Ffb2 r2(15)
r2 Ffb2 l' Uud2 l Ffb2 Uud2 r Uud2 r' Ffb2 r Uud2 Ffb2 r2(15)
r2 Ffb2 l' Uud2 l Uud2 F2 l2 Ffb2 r F2 r' Uud2 l Uud2(15)
r2 Ffb2 Uud2 r F2 r' F2 l Uud2 F2 l F2 r' Ffb2 r2(15)
r2 Ffb2 Uud2 r F2 l' U2 r U2 F2 l Uud2 l' Ffb2 r2(15)
r2 Ffb2 Uud2 l Uud2 r' Ffb2 r Ffb2 Uud2 r Uud2 l' Ffb2 r2(15)
r2 Ffb2 Uud2 l Uud2 l' F2 l2 U2 l U2 l' Ffb2 r F2(15)
r2 Ffb2 Uud2 l Uud2 l' Uud2 r Uud2 F2 l F2 r' Ffb2 r2(15)
r2 Ffb2 Uud2 r' Ffb2 r Uud2 r' Uud2 Ffb2 l' Uud2 l Ffb2 r2(15)
r2 Ffb2 Uud2 r' Ffb2 l Ffb2 l' Uud2 Ffb2 r' Ffb2 r Ffb2 r2(15)
r2 Ffb2 Uud2 l' Uud2 r F2 l' F2 Uud2 r' Uud2 l Ffb2 r2(15)
r2 Ffb2 Uud2 l' Uud2 l Uud2 r' Uud2 Ffb2 r' Ffb2 r Ffb2 r2(15)
r2 Uud2 r Uud2 r' Ffb2 U2 r2 U2 l' Uud2 l Uud2 r' Ffb2(15)
r2 Uud2 r Uud2 r' Uud2 Ffb2 r' Ffb2 l Ffb2 l' Ffb2 Uud2 r2(15)
r2 Uud2 r Uud2 r' Uud2 Ffb2 l' Uud2 l Uud2 r' Ffb2 Uud2 r2(15)
r2 Uud2 l Ffb2 r' Ffb2 U2 l' U2 r Ffb2 l' Ffb2 Uud2 r2(15)
r2 Uud2 l Ffb2 l' Ffb2 U2 l2 Uud2 r' U2 r Ffb2 l' Ffb2(15)
r2 Uud2 l Ffb2 l' Uud2 Ffb2 r' Ffb2 r Uud2 r' Ffb2 Uud2 r2(15)
r2 Uud2 r' U2 l U2 Ffb2 r Ffb2 l' Ffb2 l Ffb2 Uud2 r2(15)
r2 Uud2 r' U2 l U2 Ffb2 l U2 r' U2 r Ffb2 Uud2 r2(15)
r2 Uud2 l' Ffb2 r Ffb2 Uud2 r Uud2 r' Ffb2 l Ffb2 Uud2 r2(15)
r2 Uud2 l' Ffb2 l U2 F2 r F2 l' U2 r Ffb2 Uud2 r2(15)
r2 Uud2 Ffb2 r Uud2 r' Ffb2 r Ffb2 Uud2 l Ffb2 l' Uud2 r2(15)
r2 Uud2 Ffb2 r Uud2 l' Uud2 l Ffb2 Uud2 r Uud2 r' Uud2 r2(15)
r2 Uud2 Ffb2 l Ffb2 r' U2 l U2 Ffb2 r Ffb2 l' Uud2 r2(15)
r2 Uud2 Ffb2 l Ffb2 l' Ffb2 r Ffb2 Uud2 r Uud2 r' Uud2 r2(15)
r2 Uud2 Ffb2 r' U2 r U2 l' Ffb2 U2 l' U2 r Uud2 r2(15)
r2 Uud2 Ffb2 r' U2 l F2 r' F2 U2 l' Ffb2 l Uud2 r2(15)
r2 Uud2 Ffb2 l' Ffb2 r Uud2 r' Uud2 Ffb2 r' Ffb2 l Uud2 r2(15)
r2 Uud2 Ffb2 l' Ffb2 l U2 l2 F2 l' F2 l Uud2 r' U2(15)
r2 Uud2 Ffb2 l' Ffb2 l Ffb2 r' Ffb2 U2 l' U2 r Uud2 r2(15)
l2 F2 r Uud2 r' Ffb2 Uud2 l' Uud2 l Ffb2 l' Uud2 F2 l2(15)
l2 F2 r Uud2 l' Uud2 F2 r' F2 l Uud2 r' Uud2 F2 l2(15)
l2 F2 l Ffb2 l' Ffb2 Uud2 r' Ffb2 r Ffb2 l' Uud2 F2 l2(15)
l2 F2 l Ffb2 l' Ffb2 Uud2 l' Uud2 r Uud2 r' Uud2 F2 l2(15)
l2 F2 r' Uud2 r F2 U2 l U2 r' F2 l Uud2 F2 l2(15)
l2 F2 r' Uud2 r Uud2 Ffb2 r2 Ffb2 r F2 r' Uud2 l Uud2(15)
l2 F2 r' Uud2 l Uud2 Ffb2 l Ffb2 l' Uud2 r Uud2 F2 l2(15)
l2 F2 l' F2 r F2 Uud2 r F2 l' F2 l Uud2 F2 l2(15)
l2 F2 l' F2 r F2 Uud2 l Uud2 r' Uud2 r Uud2 F2 l2(15)
l2 F2 l' F2 l F2 Uud2 r2 Uud2 l F2 r' Uud2 l Uud2(15)
l2 F2 Uud2 r Uud2 r' Ffb2 r2 U2 l U2 l' Ffb2 r F2(15)
l2 F2 Uud2 r Uud2 r' Uud2 l Uud2 Ffb2 l Ffb2 l' F2 l2(15)
l2 F2 Uud2 r Uud2 l' F2 r F2 Uud2 l Uud2 r' F2 l2(15)
l2 F2 Uud2 r Uud2 l' Uud2 r2 Ffb2 r Ffb2 l' Uud2 l F2(15)
l2 F2 Uud2 l Ffb2 r' Ffb2 r Uud2 Ffb2 l Ffb2 l' F2 l2(15)
l2 F2 Uud2 l Ffb2 l' Ffb2 l2 Uud2 l Ffb2 r' Ffb2 r F2(15)
l2 F2 Uud2 l Ffb2 l' Uud2 l Uud2 Ffb2 r Uud2 r' F2 l2(15)
l2 F2 Uud2 r' Uud2 r Uud2 l' Uud2 F2 r' F2 l F2 l2(15)
l2 F2 Uud2 r' Uud2 l Ffb2 l' Ffb2 Uud2 l' Uud2 r F2 l2(15)
l2 F2 Uud2 l' F2 r U2 l' U2 F2 r' Uud2 r F2 l2(15)
l2 F2 Uud2 l' F2 l F2 r' Uud2 F2 r' F2 l F2 l2(15)
l2 U2 r Ffb2 r' U2 F2 l' F2 r U2 l' Ffb2 U2 l2(15)
l2 U2 r Ffb2 r' Ffb2 Uud2 r2 Uud2 r' U2 r Ffb2 l' Ffb2(15)
l2 U2 r Ffb2 l' Ffb2 Uud2 l' Uud2 l Ffb2 r' Ffb2 U2 l2(15)
l2 U2 l U2 r' U2 Ffb2 r' U2 l U2 l' Ffb2 U2 l2(15)
l2 U2 l U2 r' U2 Ffb2 l' Ffb2 r Ffb2 r' Ffb2 U2 l2(15)
l2 U2 l U2 l' U2 Ffb2 r2 Ffb2 l' U2 r Ffb2 l' Ffb2(15)
l2 U2 r' Ffb2 r Uud2 Ffb2 l Ffb2 l' Uud2 l Ffb2 U2 l2(15)
l2 U2 r' Ffb2 l Ffb2 U2 r U2 l' Ffb2 r Ffb2 U2 l2(15)
l2 U2 l' Uud2 l Uud2 Ffb2 r Uud2 r' Uud2 l Ffb2 U2 l2(15)
l2 U2 l' Uud2 l Uud2 Ffb2 l Ffb2 r' Ffb2 r Ffb2 U2 l2(15)
l2 U2 Ffb2 r Ffb2 r' Ffb2 l Ffb2 U2 r U2 l' U2 l2(15)
l2 U2 Ffb2 r Ffb2 l' Uud2 l Uud2 Ffb2 l Ffb2 r' U2 l2(15)
l2 U2 Ffb2 l U2 r' F2 l F2 U2 r Ffb2 r' U2 l2(15)
l2 U2 Ffb2 l U2 l' U2 r Ffb2 U2 r U2 l' U2 l2(15)
l2 U2 Ffb2 r' Ffb2 r Ffb2 l' Ffb2 Uud2 l' Uud2 l U2 l2(15)
l2 U2 Ffb2 r' Ffb2 r Uud2 r2 F2 l' F2 l Uud2 r' U2(15)
l2 U2 Ffb2 r' Ffb2 l U2 r' U2 Ffb2 l' Ffb2 r U2 l2(15)
l2 U2 Ffb2 r' Ffb2 l Ffb2 r2 Uud2 r' Uud2 l Ffb2 l' U2(15)
l2 U2 Ffb2 l' Uud2 r Uud2 r' Ffb2 Uud2 l' Uud2 l U2 l2(15)
l2 U2 Ffb2 l' Uud2 l Ffb2 l' Ffb2 Uud2 r' Ffb2 r U2 l2(15)
l2 U2 Ffb2 l' Uud2 l Uud2 l2 Ffb2 l' Uud2 r Uud2 r' U2(15)
l2 Ffb2 r Uud2 r' Ffb2 Uud2 l' Uud2 l Ffb2 l' Uud2 Ffb2 l2(15)
l2 Ffb2 r Uud2 r' Uud2 F2 r2 Ffb2 l' F2 l Uud2 r' Uud2(15)
l2 Ffb2 r Uud2 l' Uud2 F2 r' F2 l Uud2 r' Uud2 Ffb2 l2(15)
l2 Ffb2 l Ffb2 l' Ffb2 Uud2 r' Ffb2 r Ffb2 l' Uud2 Ffb2 l2(15)
l2 Ffb2 l Ffb2 l' Ffb2 Uud2 l' Uud2 r Uud2 r' Uud2 Ffb2 l2(15)
l2 Ffb2 l Ffb2 l' Uud2 F2 l2 F2 l' Uud2 r Uud2 r' Uud2(15)
l2 Ffb2 r' Uud2 r F2 U2 l U2 r' F2 l Uud2 Ffb2 l2(15)
l2 Ffb2 r' Uud2 l Uud2 Ffb2 l Ffb2 l' Uud2 r Uud2 Ffb2 l2(15)
l2 Ffb2 l' F2 r F2 Uud2 r F2 l' F2 l Uud2 Ffb2 l2(15)
l2 Ffb2 l' F2 r F2 Uud2 l Uud2 r' Uud2 r Uud2 Ffb2 l2(15)
l2 Ffb2 Uud2 r Uud2 r' Uud2 l Uud2 Ffb2 l Ffb2 l' Ffb2 l2(15)
l2 Ffb2 Uud2 r Uud2 l' F2 r F2 Uud2 l Uud2 r' Ffb2 l2(15)
l2 Ffb2 Uud2 l Ffb2 r' Ffb2 r Uud2 Ffb2 l Ffb2 l' Ffb2 l2(15)
l2 Ffb2 Uud2 l Ffb2 l' Uud2 l Uud2 Ffb2 r Uud2 r' Ffb2 l2(15)
l2 Ffb2 Uud2 r' Uud2 r F2 r2 U2 r' U2 r Ffb2 l' F2(15)
l2 Ffb2 Uud2 r' Uud2 r Uud2 l' Uud2 F2 r' F2 l Ffb2 l2(15)
l2 Ffb2 Uud2 r' Uud2 l Ffb2 l' Ffb2 Uud2 l' Uud2 r Ffb2 l2(15)
l2 Ffb2 Uud2 l' F2 r U2 l' U2 F2 r' Uud2 r Ffb2 l2(15)
l2 Ffb2 Uud2 l' F2 l F2 r' Uud2 F2 r' F2 l Ffb2 l2(15)
l2 Uud2 r Ffb2 r' U2 F2 l' F2 r U2 l' Ffb2 Uud2 l2(15)
l2 Uud2 r Ffb2 l' Ffb2 Uud2 l' Uud2 l Ffb2 r' Ffb2 Uud2 l2(15)
l2 Uud2 l U2 r' U2 Ffb2 r' U2 l U2 l' Ffb2 Uud2 l2(15)
l2 Uud2 l U2 r' U2 Ffb2 l' Ffb2 r Ffb2 r' Ffb2 Uud2 l2(15)
l2 Uud2 r' Ffb2 r Ffb2 U2 r2 Uud2 l U2 l' Ffb2 r Ffb2(15)
l2 Uud2 r' Ffb2 r Uud2 Ffb2 l Ffb2 l' Uud2 l Ffb2 Uud2 l2(15)
l2 Uud2 r' Ffb2 l Ffb2 U2 r U2 l' Ffb2 r Ffb2 Uud2 l2(15)
l2 Uud2 l' Uud2 l Ffb2 U2 l2 U2 l Ffb2 r' Ffb2 r Ffb2(15)
l2 Uud2 l' Uud2 l Uud2 Ffb2 r Uud2 r' Uud2 l Ffb2 Uud2 l2(15)
l2 Uud2 l' Uud2 l Uud2 Ffb2 l Ffb2 r' Ffb2 r Ffb2 Uud2 l2(15)
l2 Uud2 Ffb2 r Ffb2 r' U2 r2 F2 r F2 r' Uud2 l U2(15)
l2 Uud2 Ffb2 r Ffb2 r' Ffb2 l Ffb2 U2 r U2 l' Uud2 l2(15)
l2 Uud2 Ffb2 r Ffb2 l' Uud2 l Uud2 Ffb2 l Ffb2 r' Uud2 l2(15)
l2 Uud2 Ffb2 l U2 r' F2 l F2 U2 r Ffb2 r' Uud2 l2(15)
l2 Uud2 Ffb2 l U2 l' U2 r Ffb2 U2 r U2 l' Uud2 l2(15)
l2 Uud2 Ffb2 r' Ffb2 r Ffb2 l' Ffb2 Uud2 l' Uud2 l Uud2 l2(15)
l2 Uud2 Ffb2 r' Ffb2 l U2 r' U2 Ffb2 l' Ffb2 r Uud2 l2(15)
l2 Uud2 Ffb2 l' Uud2 r Uud2 r' Ffb2 Uud2 l' Uud2 l Uud2 l2(15)
l2 Uud2 Ffb2 l' Uud2 l Ffb2 l' Ffb2 Uud2 r' Ffb2 r Uud2 l2(15)
r' U2 r U2 l' U2 l2 F2 r F2 l' U2 F2 r2 F2(15)
r' U2 r U2 l' Uud2 l2 Uud2 Ffb2 r' U2 l U2 r2 Ffb2(15)
r' U2 l F2 l' F2 r2 U2 r U2 r' U2 F2 r2 F2(15)
r' Uud2 r Uud2 l' F2 r2 U2 l U2 r' F2 U2 l2 U2(15)
r' Uud2 r Uud2 l' Ffb2 r2 Ffb2 Uud2 l' F2 r F2 l2 Uud2(15)
r' Uud2 l Ffb2 r' F2 r2 Ffb2 U2 r' U2 l F2 l2 Uud2(15)
r' Uud2 l Ffb2 r' F2 l2 F2 U2 l' U2 r Ffb2 r2 Uud2(15)
r' Uud2 l Ffb2 r' Ffb2 r2 Uud2 r F2 l' F2 U2 l2 U2(15)
r' Uud2 l Ffb2 r' Ffb2 l2 U2 l F2 r' F2 Uud2 r2 U2(15)
r' Uud2 l Ffb2 l' U2 l2 U2 Ffb2 r' Ffb2 l Ffb2 r2 Uud2(15)
l' F2 r U2 r' U2 l2 F2 l F2 l' F2 U2 l2 U2(15)
l' F2 l F2 r' F2 r2 U2 l U2 r' F2 U2 l2 U2(15)
l' F2 l F2 r' Ffb2 r2 Ffb2 Uud2 l' F2 r F2 l2 Uud2(15)
l' Ffb2 r Uud2 r' F2 r2 F2 Uud2 l' Uud2 r Uud2 l2 Ffb2(15)
l' Ffb2 r Uud2 l' U2 r2 U2 F2 r' F2 l Uud2 l2 Ffb2(15)
l' Ffb2 r Uud2 l' U2 l2 Uud2 F2 l' F2 r U2 r2 Ffb2(15)
l' Ffb2 r Uud2 l' Uud2 r2 F2 r U2 l' U2 Ffb2 l2 F2(15)
l' Ffb2 r Uud2 l' Uud2 l2 Ffb2 l U2 r' U2 F2 r2 F2(15)
l' Ffb2 l Ffb2 r' U2 l2 F2 r F2 l' U2 F2 r2 F2(15)
l' Ffb2 l Ffb2 r' Uud2 l2 Uud2 Ffb2 r' U2 l U2 r2 Ffb2(15)
Ffb2 r Uud2 l' Uud2 l U2 r2 U2 Ffb2 r Uud2 r' Uud2 r2(15)
Ffb2 l Ffb2 r' U2 r Uud2 r2 Uud2 Ffb2 r Ffb2 r' U2 l2(15)
Ffb2 l Ffb2 r' U2 r Uud2 l2 U2 Ffb2 l Ffb2 l' Uud2 r2(15)
Ffb2 l Ffb2 r' U2 l Ffb2 r2 Ffb2 U2 l U2 l' U2 l2(15)
Ffb2 l Ffb2 l' Ffb2 r U2 r2 U2 Ffb2 r Uud2 r' Uud2 r2(15)
Ffb2 r2 U2 r' F2 l F2 Uud2 l2 U2 l Uud2 r' Ffb2 l(15)
Ffb2 r2 U2 l' U2 r Ffb2 Uud2 l2 Uud2 l U2 r' U2 r(15)
Ffb2 r2 Uud2 r F2 l' F2 U2 l2 U2 r' Uud2 l Ffb2 r'(15)
Ffb2 r2 Uud2 l Uud2 r' Uud2 F2 l2 F2 l' Uud2 l Ffb2 r'(15)
Ffb2 l2 U2 r U2 l' Ffb2 Uud2 r2 Uud2 l' Ffb2 r Ffb2 r'(15)
Ffb2 l2 U2 l F2 r' F2 Uud2 r2 U2 r' Uud2 l Ffb2 r'(15)
Ffb2 l2 Uud2 r' Uud2 l Uud2 F2 r2 F2 r Uud2 r' Ffb2 l(15)
Ffb2 l2 Uud2 l' F2 r F2 U2 r2 U2 l Uud2 r' Ffb2 l(15)
Ffb2 r' Ffb2 r Ffb2 l' U2 l2 U2 Ffb2 l' Uud2 l Uud2 l2(15)
Ffb2 r' Ffb2 l U2 r' Ffb2 l2 Ffb2 U2 r' U2 r U2 r2(15)
Ffb2 r' Ffb2 l U2 l' Uud2 r2 U2 Ffb2 r' Ffb2 r Uud2 l2(15)
Ffb2 r' Ffb2 l U2 l' Uud2 l2 Uud2 Ffb2 l' Ffb2 l U2 r2(15)
Ffb2 l' Uud2 r Uud2 r' U2 l2 U2 Ffb2 l' Uud2 l Uud2 l2(15)
Uud2 r Uud2 r' Uud2 l F2 l2 F2 Uud2 l Ffb2 l' Ffb2 l2(15)
 Uud2 r Uud2 l' F2 r Uud2 l2 Uud2 F2 r F2 r' F2 r2(15)
Uud2 r Uud2 l' F2 l Ffb2 r2 F2 Uud2 r Uud2 r' Ffb2 l2(15)
Uud2 r Uud2 l' F2 l Ffb2 l2 Ffb2 Uud2 l Uud2 l' F2 r2(15)
Uud2 l Ffb2 r' Ffb2 r F2 l2 F2 Uud2 l Ffb2 l' Ffb2 l2(15)
Uud2 r2 F2 r U2 l' U2 Ffb2 l2 F2 l' Ffb2 r Uud2 l'(15)
Uud2 r2 F2 l F2 r' Uud2 Ffb2 l2 Ffb2 l' F2 r F2 r'(15)
Uud2 r2 Ffb2 r' U2 l U2 F2 l2 F2 r Ffb2 l' Uud2 r(15)
Uud2 r2 Ffb2 l' Ffb2 r Ffb2 U2 l2 U2 l Ffb2 l' Uud2 r(15)
Uud2 l2 F2 r' F2 l Uud2 Ffb2 r2 Ffb2 l Uud2 r' Uud2 r(15)
Uud2 l2 F2 l' U2 r U2 Ffb2 r2 F2 r Ffb2 l' Uud2 r(15)
Uud2 l2 Ffb2 r Ffb2 l' Ffb2 U2 r2 U2 r' Ffb2 r Uud2 l'(15)
Uud2 l2 Ffb2 l U2 r' U2 F2 r2 F2 l' Ffb2 r Uud2 l'(15)
Uud2 r' Ffb2 l Ffb2 l' F2 r2 F2 Uud2 r' Ffb2 r Ffb2 r2(15)
Uud2 l' Uud2 r F2 r' Ffb2 r2 Ffb2 Uud2 r' Uud2 r F2 l2(15)
Uud2 l' Uud2 r F2 r' Ffb2 l2 F2 Uud2 l' Uud2 l Ffb2 r2(15)
Uud2 l' Uud2 r F2 l' Uud2 r2 Uud2 F2 l' F2 l F2 l2(15)
Uud2 l' Uud2 l Uud2 r' F2 r2 F2 Uud2 r' Ffb2 r Ffb2 r2(15)


----------



## Lucas Garron (Apr 16, 2009)

It's compiling fine, but I'm not sure it's running correctly...

Could you give us a bunch of test inputs, maybe even some test files to pipe in?

Anyhow, this leeks like it could be amazing.


----------



## clement (Apr 16, 2009)

You can pipe this for solving the OLL Parity :

G(13)WWGWGGW(13)R(16)B(16)O(16)Y(16)
Y
f f' f2 b b' b2 u u' u2 d d' d2 U U' D D' L L' L2 R R' R2 F F' B B' end

For solving case 3 in http://frederickbadie.free.fr/444PLLparity.html in <R2, r2, L2, l2, F2, f2, B2, b2, U, u2, D, d2> :

G(16)WRRW(13)RYYR(13)B(16)O(13)WWOY(13)OOY
Y
f f' b b' d d' u u' r r' l l' R R' L L' F F' B B' end


----------



## AvGalen (Apr 16, 2009)

I guess I know what Clement was doing with his "free weekend" during Danish Open 

Is there any formula you can supply for estimating the depth, based on the turns you allow and the amound of memory?

And also, this program is just begging for a GUI. Right now it is just a geek toy


----------



## masterofthebass (Apr 16, 2009)

Odd, I just tried:

G(6)WG(9)W(6)GW(9)R(16)B(16)O(16)Y(16)

(just 2 centers. Ubr<->Fur)

The optimal alg is probably 
r U' l' U r' U' l U(8)

but this program only found 
r U' r l' r' U r' U' l U(10)

Granted, it was the first solution it found, but it seemed like the solutions were increasing as the depth increased, so I just assumed it found the optimal solution first.


----------



## MTGjumper (Apr 16, 2009)

masterofthebass said:


> r U' *r* l' *r'* U r' U' l U(10)




Errm, what?


----------



## masterofthebass (Apr 16, 2009)

weird... i didn't notice that. I guess it did find the niklas.


----------



## clement (Apr 16, 2009)

AvGalen said:


> Is there any formula you can supply for estimating the depth, based on the turns you allow and the amound of memory?


Yes, in v3.



AvGalen said:


> And also, this program is just begging for a GUI. Right now it is just a geek toy


Yes, in v3 



masterofthebass said:


> The optimal alg is probably
> r U' l' U r' U' l U(8)
> 
> but this program only found
> r U' r l' r' U r' U' l U(10)



I guess it's because the optimal solution was too short. The program starts with solutions 2 + the max distance of the hash table.


----------



## rachmaninovian (Apr 17, 2009)

noob question: how do i end the search?

EDIT: got the answer =P

anyway great program!


----------



## cubacca1972 (Jun 20, 2009)

My Linux is a bit rusty. How do I compile and run this program?


----------



## blah (Jun 20, 2009)

cubacca1972 said:


> My Linux is a bit rusty. How do I compile and run this program?



Terminal.

```
$ cd [whatever]
$ make
```
.
Funny you should ask. I just asked Clement yesterday


----------



## Am1n- (Jun 20, 2009)

MTGjumper said:


> masterofthebass said:
> 
> 
> > r U' *r* l' *r'* U r' U' l U(10)
> ...


r l' r' == l' ==> ?


----------



## cubacca1972 (Jun 22, 2009)

blah said:


> cubacca1972 said:
> 
> 
> > My Linux is a bit rusty. How do I compile and run this program?
> ...



Hmm..

Ok, so cd [where I put the file]

what exactly do I type after make?

I just end up with the same prompt I wound up with after doing the cd [whatever] command.

Sorry to be so dense, but my Linux is really really rusty.


----------



## blah (Jun 22, 2009)

Nothing. I just typed make. And it worked :confused:

You've gotta type cd yadda/yadda/yadda/blah/blah/blah/optimal444. It's gotta end with optimal444.

I know next to nothing about Linux or CLI by the way


----------



## rahulkadukar (Jun 22, 2009)

Does anyone have a Windows version


----------



## hr.mohr (Jun 22, 2009)

I use this on my mac, should also work for linux and freebsd:


```
$ unzip optimal444.zip
$ cd optimal444
$ make
$ ./main
```


----------



## rachmaninovian (Jun 23, 2009)

u have to modify the makefile for linux. delete some lines i think. i forgot what i did, as i did it with help from a friend about 3 months back.


----------



## blah (Jun 23, 2009)

rachmaninovian said:


> u have to modify the makefile for linux. delete some lines i think. i forgot what i did, as i did it with help from a friend about 3 months back.



I didn't have to do anything. I just typed make and it worked.


----------



## cubacca1972 (Jun 25, 2009)

Grrr!

Now it just says:

Nothing to be done for 'all' .

after I type make.

What am I doing wrong?


----------

