DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Trilha de pedras

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, vamos ajudar Manasa a achar um tesouro escondido no caminho final a uma trilha de pedras. Vejamos mais informações com a explicação e sua resolução.

Manasa and Stones -

Manasa está em uma caminhada com amigos. Ela encontra uma trilha de pedras com números nelas. Ela começa a seguir a trilha e percebe que quaisquer números de duas pedras consecutivas diferem em um dos dois valores. Diz a lenda que existe um tesouro no final da trilha. Se Manasa adivinhar o valor da última pedra, o tesouro será dela.

Exemplo

  • n = 2
  • a = 2
  • b = 3

Ela encontra 2 pedras e suas diferenças são a = 2 ou b = 3. Sabemos que ela começa com uma pedra 0 não incluída em sua contagem. As permutações de diferenças para as duas pedras são [2,2], [2, 3], [3,2] ou [3, 3]. Olhando para cada cenário, as pedras podem ter [2, 4], [2, 5], [3, 5] ou [3, 6] nelas. A última pedra pode ter qualquer um dos 4, 5 ou 6 em sua face.
Calcule todos os números possíveis que podem ocorrer na última pedra dada uma pedra inicial com um 0, um número de pedras adicionais encontradas e as possíveis diferenças entre pedras consecutivas.

Vejamos o código a seguir:

function stones(n, a, b) {
    // Write your code here
  const result = new Set();

  for (let i = 0; i < n; i++) {
    const max = Math.max(a, b) * (n - 1 - i);
    const min = Math.min(a, b) * i;
    result.add(max + min); 
  }

  return Array.from(result).sort((x, y) => x - y);
}
Enter fullscreen mode Exit fullscreen mode

Começamos criando uma variável que terá como recebimento o Set() que irá guardar valores únicos de qualquer tipo. Logo em seguida criamos um laço foronde o index irá adicionar 1, toda enquanto ele for menor que n. Criamos a const max que irá pegar o valor máximo apresentado nos parâmetros ae b e multiplicar por n-1 - o index do momento. Faremos uma const min que irá fazer o contrário mas irá apenar multiplicar pelo index. E por último adicionamos os valores descobertos na variável result.

Finalmente retornamos um Array tendo o valor de result.

O resultado será:

2       T = 2 (test cases)
3       n = 3 (test case 1)
1       a = 1
2       b = 2
4       n = 4 (test case 2)
10      a = 10
100     b = 100
Sample Output

2 3 4 
30 120 210 300 
Enter fullscreen mode Exit fullscreen mode

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

Top comments (0)