Dark_Knight
@Dark_Knight
Game Dev

Как транспонировать матрицу?

Есть массив любой длины, но массивы внутри него всегда будут иметь одинаковую длину. Например

const arr1 = [['a', 'b'], ['1', '2'], ['+', '-']]

или

const arr2 = [['a', 'b', 'c'], ['1', '2', '3'], ['+', '-', '*']]

Надо сделать так, чтобы на входе функция принимала этот массив arr1 или arr2, а результат был следующего вида для arr1:

const result = [['a', '1', '+'], ['b', '2', '-']]

или, соответственно, для arr2:

const result = [['a', '1', '+'], ['b', '2', '-'], ['c', '3', '*']]
  • Вопрос задан
  • 135 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Коротко:

const transpose = matrix => Array.from(
  { length: matrix[0]?.length ?? 0 },
  (_, i) => matrix.map(n => n[i])
);

Длинно:

function transpose(matrix) {
  const result = Array(matrix.length && matrix[0].length);

  for (let i = 0; i < result.length; i++) {
    result[i] = [];

    for (let j = 0; j < matrix.length; j++) {
      result[i][j] = matrix[j][i];
    }
  }

  return result;
}
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
const pivot = a=>a.reduce((c,e,i)=>(e.forEach((n,j)=>c[j][i]=n),c),a[0].map(z=>[]));

Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
26 нояб. 2024, в 12:58
30000 руб./за проект
26 нояб. 2024, в 12:56
1500 руб./в час
26 нояб. 2024, в 12:53
2500 руб./за проект