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 DFS(board, row, col, rows, cols, word, cur) { if (row >= rows || row < 0) return false; if (col >= cols || col < 0) return false; const item = board[row][col]; if (item !== word[cur]) return false; if (cur + 1 === word.length) return true; board[row][col] = null; const res = DFS(board, row + 1, col, rows, ๐ง, word, cur + 1) || DFS(board, row - 1, col, rows, cols, word, cur + 1) || DFS(board, row, col - 1, rows, cols, word, cur + 1) || DFS(board, row, col + 1, rows, โ๏ธ, word, cur + 1); board[row][col] = item; return res; } function exist(board, word) { if (word.length === 0) return true; if (board.length === 0) return false; const rows = board.length; const cols = board[0].length; for (let i = 0; i < rows; i++) { for (let j = 0; j < cols; j++) { const hit = DFS(board, i, j, ๐ผ, cols, word, 0); if (hit) return true; } } return false; } let board = [['3', '6', '7', '7'], ['1', '2', '9', '5'], ['8', '2', '3', '7'], ['1', '7', '7', '3']]; let A = exist(board, '84'); // โ๏ธ = ? (identifier) // ๐ง = ? (identifier) // ๐ผ = ? (identifier) // such that A = false (boolean)
In today's challenge we are given quite a lot of code and I have no clue what it does. Fortunately we only have to fix 3 bugs, so let's get started.
The first two bugs appear on the same line:
const res = DFS(board, row + 1, col, rows, ๐ง, word, cur + 1) || DFS(board, row - 1, col, rows, cols, word, cur + 1) || DFS(board, row, col - 1, rows, cols, word, cur + 1) || DFS(board, row, col + 1, rows, โ๏ธ, word, cur + 1);
Both bugs ๐ง and โ๏ธ are very likely going to be cols
because I the two inner lines use cols
in the same argument position as well.
The final bug ๐ผ is on the line:
const hit = DFS(board, i, j, ๐ผ, cols, word, 0);
In this case ๐ผ is likely going to be rows
. Throughout the code the function calls to DFS
don't seem to alter the arguments for rows
and cols
. Let's test this assumption:
Great! And since there's quite a lot of code which I have no clue what it's doing, I'm going to skip a detailed analysis; we are likely to encounter this code again at higher ranks.
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)