Не получается правильно заполнить двуменрый массив?

Есть такая вот задачка. При помощи функции создавать двумерный массив n*n. Сама же функция принимает параметр n
В итоге должна получится матрица такого типа
(не четное количество строк и столбцов)
[2,1,1,1,2],
[0,2,1,2,0],
[0,0,2,0,0],
[0,2,1,2,0],
[2,1,1,1,2],

(четное количество)
[2,1,1,2],
[0,2,2,0],
[0,2,2,0],
[2,1,1,2],

Но как не крути у меня получается следующее

К примеру в матрице на 5 столбцов в индексах 1 и 3, между двойками, стоит ноль. А должна быть единица

function arrCreate(size) {
    let arr = [];

    for (let i = 0; i < size; i++) {
        arr[i] = []
        let count = 0;

        for (let k = 0; k < size; k++) {
            if (i === k || i === size - k - 1) {
                arr[i][k] = 2
                count++;
            } else {
                if (count == 1) {
                    arr[i][k] = 1
                } else {
                    arr[i][k] = 0
                    count--
                }
            }
        }
    }
    return arr
}


console.log(arrCreate(5))


Кодпен почему-то не прикрепляется, сори(
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const createArr = length =>
  Array.from({ length }, (_, i) =>
    Array.from({ length }, (_, j) =>
      (i === j || i === length - j - 1) +
      ((i <= j && i <= length - j - 1) || (i >= j && i >= length - j - 1))
    )
  );
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы