蜗牛矩阵数组

时间:2018-07-11 14:43:25

标签: javascript arrays matrix

我正在寻找执行此操作的功能,

test(3);
#result
3333333
3222223
3211123
3210123
3211123
3222223
3333333

test(1)
#result
111
101
111

我正在尝试的是这个,但是我可以找到i和n之间的任何关系     每个循环。你不能告诉我算法吗?

    function test(n) {
      return Array.from({ length: (n * 2) + 1 }, () => {
        return Array.from({ length: (n * 2) + 1 }, (item, i) => {
          return i;
        })
      });
    }

    test(3)

结果:

[ [ 0, 1, 2, 3, 4, 5, 6 ],
  [ 0, 1, 2, 3, 4, 5, 6 ],
  [ 0, 1, 2, 3, 4, 5, 6 ],
  [ 0, 1, 2, 3, 4, 5, 6 ],
  [ 0, 1, 2, 3, 4, 5, 6 ],
  [ 0, 1, 2, 3, 4, 5, 6 ],
  [ 0, 1, 2, 3, 4, 5, 6 ] ]

1 个答案:

答案 0 :(得分:1)

距离这项工作还不到一百万英里。

您可以捕获外部数组索引(y)和内部数组索引(x)。 使用这两个值,您可以计算出要在单元格x,y中输入的内容。

例如。

function test(n) {
  return Array.from({ length: (n * 2) + 1 }, (_, y) => {
    return Array.from({ length: (n * 2) + 1 }, (_, x) => {
      return Math.max(
        x > n ? x - n : n - x,
        y > n ? y - n : n - y
      );
    })
  });
}

const ret = test(3);
ret.forEach((i) => {
  console.log(i.join(""));
});