Philip Martin wrote:

> Philip Martin <philip.mar...@wandisco.com> writes:
> 
>>     alter(.)
>>     alter(A/B)
>>     alter(X/Y)
>>     rotate(A, X/Y/Z)
>>     rotate(X, A/B/C)
>>     alter(A)           (pre-rotate X/Y/Z)
>>     alter(X/Y/Z)       (pre-rotate A)
>>     move(X/Y/Z/B, A/B)
>>     alter(X)           (pre-rotate A/B/X)
> 
> Oops!                               A/B/C
> 
>>     alter(A/B/C)       (pre-rotate X)
>>     move(A/B/C/Y, X/Y)

I just found a solution to your (A/B, X/Y) => (Y/X, B/A) case, using sequential 
operations:

  swap(A/B, X)
  mv(A, X/Y)
  mv(X/Y/X/Y, A)
  mv(X/Y/X, A/B)

- Julian

Reply via email to