amx()) only. Here the resulting grid is stored in array g:
//--- Declarationsconst a=[],r=[],c=[];let i=k,o,j;//--- Initialisationwhile(i--)a.push(i);r.push(...amx(a));c.push(...amx(a));//--- Calculationfor(i=k;i--;)for(o=r[i],j=k;j--;)g[c[++o%k]+i*k]=a[j];