Daniel Shahaf <[email protected]> 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