DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Pulando as nuvens(revisado)

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, ajudar uma criança que está jogando um jogo onde o personagem pula sobre nuvens,mas ele gasta energia e existem algumas condições. Vejamos agora.

Jumping on the Clouds: Revisited -

Uma criança está jogando um jogo de salto nas nuvens. Neste jogo, existem nuvens numeradas sequencialmente que podem ser nuvens de trovoada ou cúmulos. O personagem deve pular de nuvem em nuvem até chegar ao início novamente.

Há uma série de nuvens e um nível de energia. O personagem parte e usa unidade de energia para dar um salto de tamanho para a nuvem. Se cair em uma nuvem de tempestade, , sua energia () diminui em unidades adicionais. O jogo termina quando o personagem pousa de volta na nuvem.

Dados os valores de , e a configuração das nuvens como uma matriz , determine o valor final de após o término do jogo.

Como você pode ver na descrição, a entrada do método esperado será um array de 1,0 e também um inteiro que é o tamanho do salto. Usando um exemplo pode tornar muito mais fácil de entender. vamos considerar que temos a seguinte entrada e encontrar o resultado esperado de acordo.

  • int c[n]: O tipo de nuvem no caminho
  • int k: O comprimento de cada pulo

Queremos retornar:

  • int: A quantidade de energia restante.

Um pouco confuso? Vejamos um exemplo:

Function
--------
n = 8, k = 2
c = [0, 0, 1, 0, 0, 1, 1, 0]

O resultado desse input será: 92
Enter fullscreen mode Exit fullscreen mode

Pode estar se perguntando: Por quê esse valor? Devemos lembrar que o valor de energia que começamos é 100, e krepresenta o comprimento de pulos, além de nser o "número de casas" a se pular. Sendo assim, 100 -> 97 -> 96 -> 93 -> 92

Vejamos a criação do código:

function jumpingOnClouds(c, k) {

  let e = 100;
  let i = 0;
    do {
        if(c[i] == 1) e -= 2;
        e--;
        i = (i + k) % c.length;
    } while(i !== 0)

    return e;
}
Enter fullscreen mode Exit fullscreen mode

A função tem como objetivo simular o jogo "Jumping on Clouds", onde o jogador salta em nuvens numeradas de 0 a n-1 e deve evitar as nuvens com valor 1.

A variável "e" é inicializada com 100, que representa a energia do jogador. A variável "i" é inicializada com 0, que representa a nuvem em que o jogador começa.

Em seguida, a função utiliza um "do-while" para simular o movimento do jogador. Dentro do loop, é verificado se o jogador está em uma nuvem com valor 1, se estiver, sua energia é reduzida em 2. Em seguida, a energia é reduzida em 1 para cada salto. A variável "i" é atualizada para a próxima nuvem que o jogador deve saltar, utilizando o operador módulo para garantir que o jogador não ultrapasse a última nuvem.

O loop continua até que o jogador retorne à nuvem inicial (i != 0). Por fim, a função retorna a energia restante do jogador após todos os saltos.

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

Top comments (0)