Многомерный массив с JS

#javascript #arrays

#javascript #массивы

Вопрос:

Ребята, я пытаюсь решить проблему программирования. Я должен сгенерировать двумерный массив, содержащий блоки, представленные цветами.

Конечный результат, которого я хочу достичь, заключается в следующем:

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


4: purple, occupies an entire line.
2: red, occupies two spaces on each line.
1: black occupies 6 spaces
3: orange, occupies 1 space of each line
6: blue, occupies 1 space
5: green occupies two line spaces
  

Кто-нибудь может мне помочь?
Код, который я пытаюсь сделать, заключается в следующем:

 let purple = [[4, 4, 4, 4, 4, 4, 4, 4]];
let red = [[2, 2], [2, 2]];
let black = [[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]];
let orange = [[3], [3]];
let blue = [[6]];
let green = [[5, 5]];

let elements = [purple, red, black, orange, blue, green];

for (let i = 0; i < elements.length; i  ) {
    console.log(elements[i])
}
  

Комментарии:

1. Пожалуйста, не создавайте больше работы для других людей, вандализируя свои сообщения. Размещая в сети Stack Exchange, вы предоставляете Stack Exchange не подлежащее отзыву право в соответствии с лицензией CC BY-SA 4.0 на распространение этого контента (т. Е. Независимо от вашего будущего выбора). Согласно политике обмена стеками, распространяется версия post, не подвергшаяся вандализму. Таким образом, любой вандализм будет отменен. Если вы хотите узнать больше об удалении записи, пожалуйста, смотрите: Как работает удаление?

Ответ №1:

 let purple = [
  [4, 4, 4, 4, 4, 4, 4, 4]
];
let red = [
  [2, 2],
  [2, 2]
];
let black = [
  [1, 1, 1, 1, 1, 1],
  [1, 1, 1, 1, 1, 1]
];
let orange = [
  [3],
  [3]
];
let blue = [
  [6]
];
let green = [
  [5, 5]
];

let elements = [purple, red, black, orange, blue, green];
let grid = [
  [0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0]
];

for (let i = 0; i < elements.length; i  ) {
  jloop: for (let j = 0; j < elements[i].length; j  ) {
    yloop: for (let y = 0; y < grid.length; y  ) {
      for (let x = 0; x < grid[y].length; x  ) {
        if (grid[y][x]) continue;
        let space_on_this_line = grid[y].length - x;
        if (elements[i].length <= space_on_this_line) {
          for (let k = 0; k < elements[i][j].length; k  ) {
            grid[y][x   k] = elements[i][j][k];
          }
          if (  j>=elements[i].length) break jloop;
          continue yloop;
        }
      }
    }
  }
}

for (let y = 0; y < grid.length; y  ) {
  console.log(grid[y].join(""));
}  

что-то вроде этого, верно?