DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: A grade de pesquisa

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, vamos movimentar uma grade com resultados. Vejamos mais informações com a explicação e sua resolução.

The Grid Search -

Dada uma matriz de cadeias de dígitos, tente encontrar a ocorrência de um determinado padrão de dígitos. Nas matrizes de grade e padrão, cada string representa uma linha na grade. Por exemplo, considere a seguinte grade:

1234567890  
09 876543 21  
11 111111 11  
11 111111 11  
2222222222  
Enter fullscreen mode Exit fullscreen mode

A matriz padrão é:

876543  
111111  
111111
Enter fullscreen mode Exit fullscreen mode

O padrão começa na segunda linha e na terceira coluna da grade e continua nas duas linhas seguintes. Diz-se que o padrão está presente na grade. O valor de retorno deve ser YES ou NO, dependendo se o padrão for encontrado. Nesse caso, retorne YES.

Descrição da função

Complete a função gridSearch no editor abaixo. Ele deve retornar YES se o padrão existir na grade ou NO não.

gridSearch tem o(s) seguinte(s) parâmetro(s):

  • string G[R]: a grade para pesquisar
  • string P[r]: o padrão a ser procurado

Vejamos o código em execução:

function gridSearch(G, P) {
    // Write your code here
  for(let i=0; i<=G.length-P.length; i++){
    for(let j=0; j<=G[0].length-P[0].length; j++){
        var k = 0;
    while ( G[i+k].slice(j,j+P[0].length) == P[k] ){
           k++;
        if(k == P.length) return 'YES';
    }
  }
}
  return 'NO';
}
Enter fullscreen mode Exit fullscreen mode

O código usa dois loops for aninhados para percorrer todas as posições possíveis na matriz G onde o padrão P pode ser encontrado. O primeiro loop for itera pelas linhas de G, enquanto o segundo loop for itera pelas colunas de G.

Dentro dos loops for, uma variável k é definida como zero para acompanhar o progresso na comparação entre G e P.

Em seguida, um loop while é usado para comparar as partes relevantes de G e P. A condição do loop while verifica se a fatia da matriz G é igual à linha correspondente de P.

Se o loop while chegar ao final do padrão P, ou seja, se k for igual ao comprimento de P, isso significa que o padrão P foi encontrado em G. Nesse caso, a função retorna a string 'YES'.

Se o código não encontrar o padrão P em nenhuma posição possível na matriz G, a função retorna a string 'NO' após percorrer todos os elementos.

O resultado será:

2
10 10
7283455864
6731158619
8988242643
3830589324
2229505813
5633845374
6473530293
7053106601
0834282956
4607924137
3 4
9505
3845
3530
15 15
400453592126560
114213133098692
474386082879648{-truncated-}

Expected Output
- YES
- NO
Enter fullscreen mode Exit fullscreen mode

Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.

Top comments (0)