Spiral algorithm n=4

by mspinks

JavaScript

input = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];

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(3));