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);