матрица массивов улиток javascript

1

Я ищу функцию, чтобы сделать это,

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

test(1)
#result
111
101
111

Я пытаюсь это сделать, но я мог найти любую связь между я и 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 ] ]
  • 0
    "улитка матрица javascript", как термины веб-поиска могут помочь вам.
  • 0
    не мог! потому что это имеет некоторые различия
Показать ещё 1 комментарий
Теги:
arrays
matrix

1 ответ

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(""));
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню