Daniel Shahaf <danie...@elego.de> writes:

> First sketch:
>
>     move(/A/B, /X/Y/Z/B)
>     move(/M/N, /A/B/C/N)
>     move(/X/Y, /M/N/O/Y)
>     rotate(/A, /M/N/O, /X, /A/B/C, /M, /X/Y/Z)
>
> The final rotate() call looks tricky: it moves something to /M and
> something to /M/N/O, so the former move must be handled first
> (regardless of which target appears first in the cyclic list of
> arguments).

The moves look like a problem before we get to the rotate.  If the
receiver acts on the moves as they are received then after

     move(/A/B, /X/Y/Z/B)

/A/B/C is already /X/Y/Z/B/C so the second move is

     move(/M/N, /X/Y/Z/B/C/N)

and now /M/N/O is already /X/Y/Z/B/C/N/O so the third move is

    move(/X/Y, /X/Y/Z/B/C/N/O/Y)

which is impossible.

I can't see any way to do the 9-node change without using temporaries.

-- 
Philip Martin | Subversion Committer
WANdisco | Non-Stop Data
www.wandisco.com

Reply via email to