// Mini-snail (174 bytes, only supports n x n patterns)functionsnail(a){for(vari=0,Y=0,y=0,Y=0,d=0,s=a.length,r=[],x=-1,X=1,l;l=s;++d){while(l--){y+=Y;x+=X;r[i++]=a[y][x]}d%2?(X=(d%4)==1?-1:1,Y=0):(X=0,Y=d%4?-1:1,--s)}returnr}// Expanded mini-snail:functionsnail(array){varsize=array.length;vari=0;varret=[];varx=-1;vary=0;varxIncr=1;varyIncr=0;vardirection=0;for(varloop=size;loop=size;++direction){while(loop--){y+=yIncr;x+=xIncr;ret[i++]=array[y][x];}if(direction%2){xIncr=(direction%4)==1?-1:1;yIncr=0;}else{xIncr=0;yIncr=direction%4?-1:1;--size;}}returnret;}
Comments (0)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.