@alex999921

Как заполнить произвольной ширины, высоты матрицу пирамидой?

Это код на квадратную матрицу,
как реализовать чтобы высоту и ширину задавать числами
N = 7;

// w = 6;
// h = 5;

let m = [];
for (let i = 0; i < N; i++) {
    m.push([]);
    for (let j = 0; j < N; j++) {
        m[i].push(0);
    }
}


let start = 0, end = N - 1;
while (start <= end) {
    fillLayer(m, start++, end--);
}

function fillLayer(m, s, e) {
    for (let i = s; i <= e; i++) {
        for (let j = s; j <= e; j++) {
            m[i][j]++;
        }
    }
}
console.log(m);

должно получится
[
    [1, 1, 1, 1, 1, 1],
    [1, 2, 2, 2, 2, 1],
    [1, 2, 3, 3, 2, 1],
    [1, 2, 2, 2, 2, 1],
    [1, 1, 1, 1, 1, 1]
];
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
longclaps
@longclaps
mat[x][y] = min(x,y,width-x-1,height-y-1)+1
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@dimoff66
Кратко о себе: Я есть
const w = 6;
const h = 3;

const m = Array.from(new Array(w), () => new Array(h).fill(1));
for(let shift = 1; shift <= Math.min(w, h) / 2; shift++) {
   for(let x = shift; x < w - shift; x++) {
      for(let y = shift; y < h - shift; y++) {
         m[x][y]++
      }   
   }
}
console.log(m)
Ответ написан
Комментировать
@Ridz
const w = 6;
const h = 5;
const m = Array.from({length : h},
(v,i) => (v = new Array(w).fill(1),
(i && i < h - 1) && v.fill(2,1,-1), v) );
console.table(m)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы