move(z) = { my (w=max(abs(real(z)), abs(imag(z)))); if (imag(z)==-w, z+1, real(z)==-w, z-I, imag(z)==+w, z-1, z+I); } T = matrix(1+2*M=51, 1+2*M); get(z) = T[1+M+real(z), 1+M+imag(z)] set(z, v) = T[1+M+real(z), 1+M+imag(z)] = v { z=0; for (n=1, (1+2*M)^2, set(z, n); z = move(z); ); dz = powers(I,3); dz = concat(dz, dz*(1+I)); z=0; for (n=1, 2*M^2, print (n " " vecsum(apply(d -> get(z+d), dz))); z = move(z); ); } quit