/*
 * @lc app=leetcode.cn id=59 lang=javascript
 *
 * [59] 螺旋矩阵 II
 */

// @lc code=start
/**
 * @param {number} n
 * @return {number[][]}
 */
var generateMatrix = function (n) {
  let startX = startY = 0;
  let loop = n >> 1
  let count = 1;
  let offset = 1;
  const arr = new Array(n).fill().map(_ => new Array(n).fill(0))
  while (loop--) {
    let row = startX;
    let column = startY;

    for (; column < n - offset; column++) {
      arr[row][column] = count++
    }

    for (; row < n - offset; row++) {
      arr[row][column] = count++
    }

    for (; column > startX; column--) {
      arr[row][column] = count++
    }

    for (; row > startY; row--) {
      arr[row][column] = count++
    }

    startX++;
    startY++;

    offset++;
  }

  if (n % 2 === 1) {
    const mid = n >> 1
    arr[mid][mid] = count
  }

  return arr;
};
// @lc code=end

console.log(generateMatrix(3))
console.log(generateMatrix(4))

//  1  2  3 4
// 12 13 14 5
// 11 16 15 6
// 10  9  8 7