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)