Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, você tem um mapa cheio de cavidades. Vejamos mais informações com a explicação e sua resolução.
cavityMap -
Você recebe um mapa quadrado como uma matriz de strings inteiras. Cada célula do mapa tem um valor que denota sua profundidade. Chamaremos uma célula do mapa de cavidade se e somente se esta célula não estiver na borda do mapa e cada célula adjacente a ela tiver profundidade estritamente menor. Duas células são adjacentes se tiverem um lado ou aresta comum.
Encontre todas as cavidades no mapa e substitua suas profundidades pelo caractere maiúsculo X .
A grade é reorganizada para maior clareza:
989
191
111
Retornar:
989
1X1
111
- Nosso objetivo é:devolver a string modificada.
Vejamos o código:
function cavityMap(grid) {
// Write your code here
let newgrid=grid.map((item)=>item.split(""))
for(let i=1;i<grid.length-1;i++){
for(let j=1;j<grid.length-1;j++){
let ele=grid[i][j]
if(grid[i-1][j]<ele&&grid[i][j-1]<ele&&grid[i+1][j]<ele&&grid[i][j+1]<ele){
newgrid[i][j]='X'
}
}
}
return newgrid.map((item)=>item.join(""));
}
let newgrid = grid.map((item) => item.split("")): Essa linha cria uma nova matriz chamada newgrid usando o método map. Para cada elemento item da matriz grid, é aplicado o método split(""), que divide a string item em um array de caracteres. Isso é feito para permitir a modificação individual dos caracteres posteriormente.
O código então prossegue para um loop aninhado for, que percorre a matriz grid (ou seja, as linhas e colunas). No entanto, observe que o loop vai de 1 a grid.length-1 para evitar acessar elementos fora dos limites da matriz.
Dentro do loop, a variável ele é atribuída ao elemento atual da matriz grid na posição [i][j].
A condição if verifica se o elemento atual é maior que os elementos vizinhos na matriz grid. Se todos os elementos vizinhos (acima, abaixo, à esquerda e à direita) forem menores que o elemento atual, significa que o elemento atual está em uma "cavidade" na matriz.
Se a condição do if for verdadeira, a matriz newgrid é atualizada na posição [i][j], atribuindo o caractere 'X' à mesma posição. Isso indica que o elemento original na posição [i][j] foi substituído por um 'X' para representar uma cavidade.
Depois de percorrer todos os elementos da matriz grid e atualizar a matriz newgrid conforme necessário, a função finaliza.
return newgrid.map((item) => item.join("")): Antes de retornar a matriz newgrid, a função usa o método map novamente para percorrer cada elemento da matriz newgrid e usa join("") para converter o array de caracteres de cada elemento de volta para uma string. Isso é feito para que a matriz final retornada seja composta de strings em vez de arrays de caracteres.
O resultado é:
4
1112
1912
1892
1234
input: 1112
Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.
Top comments (0)