Spiral algorithm n=4
by mspinks
JavaScript
input = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]
];
var output = [];
var traverseSpiral = function(n, level=0) {
var x=0;
var y=0;
//TOP
while (x<n) {
output.push(input[level+y][level+x]);
x++;
}
x--;
y++;
//RIGHT
while (y<n) {
output.push(input[level+y][level+x]);
y++;
}
y--;
x--;
//BOTTOM
while (x>=0) {
output.push(input[level+y][level+x]);
x--;
}
x++;
y--;
//LEFT
while (y>0) {
output.push(input[level+y][level+x]);
y--;
}
y++;
n = n - 2;
if (n>1) {
return traverseSpiral(n,level+1);
} else if (n==1) {
output.push(input[y][x+1]);
return output;
} else {
return output;
}
}
console.log(traverseSpiral(4));