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[π][π°]; 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 - π - 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 = [[2, 7, 1], [4, 2, 9], [8, 7, 3]]; rotate(M); let A = M[2][1]; // π = ? (identifier) // π° = ? (identifier) // π = ? (identifier) // such that A = 9 (number)
Our good friend rotate
is back again, if you remember this function rotates a matrix by 90Β° clockwise. This time we have to fix three bugs to proceed.
The first two bugs appear on the same line within the function swap
. This function swaps two elements at i,j
with m,n
. Knowing this we know that π and π° should be m
and n
respectively.
The final and third bug appears here:
swap(M, [i, j], [n - j - 1, n - π - 1]);
This calls the function swap
on i,j
to be swapped with n-j-1, n-i-1
and is critical for a correct rotation.
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)