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