Stefan
Legend
As mentioned in a WCA thread I believe it's possible and fairly easy to create non-canceling 11-moves scrambles for all states of the 2x2. This would allow fast scrambling while preventing giving a clue about short solutions. Anyone capable and interested in verifying/implementing this? I myself dont' have the time right now.
Holding let's say DBL fixed and only scrambling in <U,R,F> leads to 3,674,160 possible states (7! * 3^6), easily allowing brute force.
I'd suggest to first check that it's indeed possible. For that I'd have a field reachable[M] which tells whether state S is reachable in exactly M moves. Init with reachable[solved][0]=true, fill progressively, check that reachable[11] is true for all states S.
This is a one-time research so it doesn't need to be efficient or runnable on all computers. Not like the scramble program for use in competitions. For that, here's a more efficient but still easy approach:
Compute all pairs <state,lastTurnedAxis> reachable from the solved cube in exactly six moves. That's at most 69,984 pairs (9*6^5). This should still be efficient enough even with trivial brute force, and needs to be done just once per program start (or could be precomputed once and stored for reloading). Then for a cube state you want to generate, backwards-compute all pairs <state,firstTurnedAxis> that can reach the desired state in exactly five moves. For each of those, look up a matching pair six moves from solved and ending in a different axis then the finisher-path starts with. The scramble is then the concatenation of the starter path and the finisher path (these paths need to be in some way reconstructable for this, of course, but that's a minore issue and what's best depends on the actual overall implementation).
I don't have time to do it, can anyone else here? The above ideas are just how I would do it without thinking much, it can certainly be done other ways as well, and possibly better. Maybe this could also become the official WCA scrambler, though I think it's also an interesting and rewarding project by itself and it would certainly be very useful for unofficial practice.
Holding let's say DBL fixed and only scrambling in <U,R,F> leads to 3,674,160 possible states (7! * 3^6), easily allowing brute force.
I'd suggest to first check that it's indeed possible. For that I'd have a field reachable
This is a one-time research so it doesn't need to be efficient or runnable on all computers. Not like the scramble program for use in competitions. For that, here's a more efficient but still easy approach:
Compute all pairs <state,lastTurnedAxis> reachable from the solved cube in exactly six moves. That's at most 69,984 pairs (9*6^5). This should still be efficient enough even with trivial brute force, and needs to be done just once per program start (or could be precomputed once and stored for reloading). Then for a cube state you want to generate, backwards-compute all pairs <state,firstTurnedAxis> that can reach the desired state in exactly five moves. For each of those, look up a matching pair six moves from solved and ending in a different axis then the finisher-path starts with. The scramble is then the concatenation of the starter path and the finisher path (these paths need to be in some way reconstructable for this, of course, but that's a minore issue and what's best depends on the actual overall implementation).
I don't have time to do it, can anyone else here? The above ideas are just how I would do it without thinking much, it can certainly be done other ways as well, and possibly better. Maybe this could also become the official WCA scrambler, though I think it's also an interesting and rewarding project by itself and it would certainly be very useful for unofficial practice.
Last edited: