Each day I solve several coding challenges and puzzles from Codr's ranked mode. The goal is to reach genius rank, along the way I explain how I solve them. You do not need any programming background to get started, and you will learn a ton of new and interesting things as you go.
function swap(arr, [i, j], [m, n]) {
const temp = arr[i][j];
arr[i][j] = arr[m][n];
arr[m][n] = temp;
}
function rotate(M) {
const n = M.length;
for (let i = 0; i < n-1; i++) {
for (let j = 0; j < n-i; j++) {
swap(M, [i, j], [n-j-1, n-i-1]);
}
}
for (let i = 0; i < n/2; i++) {
for (let j = 0; j < n; j++) {
swap(M, [i, j], [n-i-1, j]);
}
}
}
let M = [
[7,4,7],
[9,6,4],
[1,3,9]
]
rotate(M);
let A = M[2][0]
// A = ? (number)
In today's challenge we'll be messing around with 2D matrices. There are no bugs to fix only a single answer is required.
After a quick look at the code, the function rotate
reveals its nature, it's rotating an input matrix by 90°, as such:
If you don't trust me then you can take a piece of paper and work it out, in pseudo-code the rotation is as follows:
| 7 4 7 | | 1 9 7 |
| 9 6 4 | -- 90° --> | 3 6 4 |
| 1 3 9 | | 9 4 7 |
Notice that i
is the row, and j
the column.
To find the value of A
we need to get the number from the 2nd row and 0th column, which is 9 (bottom left corner).
By solving these challenges you train yourself to be a better programmer. You'll learn newer and better ways of analyzing, debugging and improving code. As a result you'll be more productive and valuable in business. Get started and become a certified Codr today at https://nevolin.be/codr/
Top comments (0)