rotate matrix solution

by Vladymyr Shevchuk

JavaScript

const arr1 = [
	[1, 2],
  [3, 4]
];

const arr2 = [
	[1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

const rotateMatrix = arr => {
	const size = arr.length;
  
  return arr.reduce((accum, item, i) => {
  	const rotatedMatrix = item.reduce((accum, number, j) => {
    	if (!accum[j]) {
      	accum[j] = [];
        accum[j].push(number);
      } else {
      	accum[j] = number;
      }
      return accum;
    }, []);
	  
    return rotatedMatrix.map((item, index) => {
    	const accumItem = accum[index] || [];
    	const merge = [...accumItem, ...item];
      
      return merge;
    });
  }, []);
};


function getEmptyMatrix (n) {
  return Array(n).fill(Array(n).fill(null)).map(item => item.slice());
}

function getReversedMatrix (matrix) {
	const size = matrix.length;
  const emptyMatrix = getEmptyMatrix(size);

  matrix.forEach((subArr, index) => {
    subArr.forEach((item, itemIndex) => {
      emptyMatrix[itemIndex][index] = item;
    });
  });

  return emptyMatrix;
}

var rotateMatrix2 = arr => {
	return arr.reduce((acc, a, i) => {
	 a.forEach((e, idx) => {
	 	acc[idx] = acc[idx] || [];
	 	acc[idx].push(e)
	 })
     
     return acc;
  }, [])
};

var rotateMatrix3 = arr => {
	return arr.map((inArr, i) => {
		return inArr.map((e, idx) => arr[idx][i]);
	})
};

const result = rotateMatrix(arr2);
const result2 = rotateMatrix3(arr2);

//console.error('result', result);
console.error('result2', result2);