I've recently launched an online puzzle RAVEL. It's a 3D array of cubes that must be arranged in color-order. A legal move is to slide a row, column, or lane any number of spaces. The cubes that are pushed out the end are inserted at the other end.
I suggest that you visit RAVEL, click the "Experimenter" tab and try some RAVELs of various dimensions so you can better appreciate what follows.
I conjecture that all permutations are solvable but because I don't know for sure, I shuffle the RAVEL with a series of random legal moves.
Is it necessary to shuffle with legal moves? Or could I simply shuffle it with random swaps and have it still be solvable? Put another way: is the conjecture true, are all permutations solvable?
My second question has to do with solution techniques. I solve RAVELs layer-by-layer using ad hoc methods to move cubies into place without altering the positions of already-placed ones. But in the last layer, I use formalized methods for the last several cubies.
The Cycle 3 algorithm
This algorithm cycles the positions of three cubies leaving all the other cubies in place. The space between the three cubies doesn't matter so long as they form a right angle: cubies 1 & 2 on the same row, cubies 2 & 3 on the same column.
- Drag the green cubie to the apex (blue position).
- Drag the red one to the apex position.
- Drag the apex to where green started.
- Drag the apex to where red started.
The numbers in the image show the sequence of moves. To cycle in the opposite direction, switch 1 with 2, and switch 3 with 4.
Swap Two Cubies
Often you can finish solving the RAVEL using just the procedures above. But sometimes pairs of swapped cubies remain. I don't know of a general algorithm for swapping pairs that works for all sizes of RAVEL. I have managed to solve some examples by just flailing away, trying anything.
I found a procedure to do a pair swap on RAVELs where one of the dimensions equals 4.
The picture shows the sequence of moves to swap the red and green cubies. The vertical dimension must be four.
Can you create a pair swap algorithm that works for all sized RAVELs?