# A program for finding new algorithms



## Villyer (Jul 20, 2012)

I've been trying to find a program online that you can input an initial condition and final condition into, and it will return possible algorithms for getting from the starting position to the ending one.

I saw Acube3, and I noticed Acube4 alpha was released on these forums, but the input seems largely text based it seems to have a sharp learning curve.

So I made my own program using visual basic, so that the input could be a little bit more user friendly (well, me-friendly :b).

The only problem is the overhead time, because it uses brute force tactics. It takes the initial conditions and preformes one of twenty seven transformations to it repeatedly. For example, if told to find algorithms two moves long, it would test all combinations from 0.0,0.1,0.2,0.3,...,26.24,26.25,26.26


This initial program was made hastily, and has drawbacks. For one, 0 refers to R, 1 refers to R', and 2 refers to R2. Therefore, anytime 0 1 or 2 are next to each other in the sequence, they can be simplified to a single move (0.2 is the same tranformation as 1). Also, making the move L when all cubies that are in the R face is another useless move.

I also plan to make the program able to restrict possible moves. So maybe when searching for an algorithm, it only tests transformations to the R, U, and F faces.

It is my hope that these things will daractically increase the time needed to find the algorithms.
(Right now, to consider all possible 6 move algorithms takes 27^6 passed through the loop, which is ~30mins.)



I'm wondering if there are any other programs available that have a more visual and user friends interface?
And if not, I would love to take suggestions about how to improve the program that I am working on. I plan to finish it regardless of finding a better one online.


----------



## ncube (Jul 20, 2012)

cube explorer?
http://kociemba.org/cube.htm

Not online, but it's extremely easy to use. Good luck!


----------



## Lucas Garron (Jul 20, 2012)

Also note that Ryan Heise has written a nice, simple GUI for ACube syntax.

If you're smart enough to write a good solver program, you'll probably find it's not hard to learn ACube syntax instead. It is tempting to write a new solver because you think you can make it better for your own purposes, but this is about as useful as reinventing the wheel. Other programs will have better implementations with powerful features that would take you a lot of time to build.

Unless you really value the experience of writing a solver yourself, you should consider using existing programs, and maybe contributing to them (ACube is open-source).

(If you do look into doing things yourself, make sure you learn all you can about search algorithms (BFS, DFS, IDA/IDA*, A*, meet-in-the-middle/birthday search) and prune tables.)


----------



## Zarxrax (Jul 20, 2012)

Yea, acube seems to be a perfectly good solver. If you need a better interface for it, why don't you just make an interface?
Or maybe dedicate some time to improving acube? There are still some cool features it could use.


----------



## vcuber13 (Jul 20, 2012)

Zarxrax said:


> Yea, acube seems to be a perfectly good solver. If you need a better interface for it, why don't you just make an interface?
> Or maybe dedicate some time to improving acube? There are still some cool features it could use.



didn't stachu do that?


----------



## Villyer (Jul 20, 2012)

Learning Acube might be a little easier and faster, but as Lucas touched on I also want to make a program for experience. (I'm a student, and I hope to pick up a computer science minor)


----------



## Zarxrax (Jul 20, 2012)

Read about the 2-phase algorithm and implement that.
Or maybe try going from a different angle and create something simpler than a 3x3x3 solver, like a 2x2x2 solver. That should make it much quicker to compute.


----------

