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.

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)