Skip to content

Instantly share code, notes, and snippets.

@methyl
Created January 8, 2015 16:29
Show Gist options
  • Save methyl/e447dc9412bb176a09ef to your computer and use it in GitHub Desktop.
Save methyl/e447dc9412bb176a09ef to your computer and use it in GitHub Desktop.
function spiral(n) {
var array = [];
for (var i = 0; i < n; i++) {
array[i] = [];
for (var j = 0; j < n; j++) {
array[i][j] = 0;
}
}
function stroke(ary, start, last){
if(typeof start === 'undefined') var start = 0;
if(typeof last === 'undefined') var last = 0;
var size = ary.length - start * 2;
if(size === 1) {
ary[start][start] = Math.pow(ary.length, 2);
return ary;
}
if(size === 2) {
ary[start][start] = last + 1;
ary[start][start+1] = last + 2;
ary[start+1][start+1] = last + 3;
ary[start+1][start] = last + 4;
return ary;
}
else {
for(var i=0; i<size; i++) { ary[0+start][i+start] = i+1+last }
for(var i=1; i<size; i++) { ary[i+start][size-1+start] = i+size+last}
for(var i=size-2; i>=0; i--) { ary[size-1+start][i+start] = size*3-2-i+last }
for(var i=size-2; i>0; i--) { ary[i+start][0+start] = size*4-3-i+last }
stroke(ary, start+1, size*4-4+last);
}
}
stroke(array);
return array;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment