DEV Community

Ivan Trindade
Ivan Trindade

Posted on

Zerando o Hacker Rank: Contando Positivos, Negativos e Zeros

No tutorial de hoje, vou ajudá-lo a entender como resolver mais alguns desafios que você encontrará no HackerRank, usando a linguagem TypeScript.

Desafio que abordaremos:

  • Plus Minus

Plus Minus

O objetivo desse desafio, é que recebendo um array de números inteiros, calculemos as proporções entre a quantidade de items positivos, negativos e zeros do array. Devemos imprimir o valor desses cálculos em uma nova linha com 6 casas após o decimal. Você pode conferir o desafio neste link.

Por exemplo:

A entrada do array seria dessa forma:

[-4, 3, 9, 0, -4, 1];
Enter fullscreen mode Exit fullscreen mode

Devemos retornar o cálculo desses valores dessa forma:

0.500000
0.333333
0.166667
Enter fullscreen mode Exit fullscreen mode

Para resolver esse desafio, iremos utilizar a função plusMinus. Começaremos definindo uma variável const para guardar o valor total do array:

function plusMinus(arr: number[]): void) {
  const totalElements = arr.length;

  ...
}
Enter fullscreen mode Exit fullscreen mode

Após guardar o total de items do array, crie a variável count para armazenar três contadores iniciando-os com zero: um para o número de items positivos, negativos e zeros.

function plusMinus(arr: number[]): void) {
  const totalElements = arr.length;
  let count = positives: 0, negatives: 0, zeroes: 0
  ...
}
Enter fullscreen mode Exit fullscreen mode

Em seguida, usaremos o método .forEach() para percorrer cada item do array. Para cada item do array, iremos verificar se o valor é positivo, negativo ou zero e incrementaremos o valor para a variável count:

function plusMinus(arr: number[]): void) {
  const totalElements = arr.length;
  let count = { positives: 0, negatives: 0, zeroes: 0 };

  arr.forEach(num => {
    if (num > 0) count.positives++;
    if (num < 0) count.negatives++;
    if (num === 0) count.zeroes++;
  });

 ...

}
Enter fullscreen mode Exit fullscreen mode

Por fim, após o loop, iremos calcular as três relações entre a quantidade de items positivos, zeros e o tamanho total do array dividindo o contador pelo número total de items. O resultado é arredondado para seis casas decimais usando o método .toFixed(), assim como foi solicitado no desafio. No final, imprimimos os valores totais de positivesToTotalRatio, negativesToTotalRatio e zeroesToTotalRatio.

function plusMinus(arr: number[]): void) {
  const totalElements = arr.length;
  let count = { positives: 0, negatives: 0, zeroes: 0 };

  arr.forEach((num) => {
    if (num > 0) count.positives++;
    if (num < 0) count.negatives++;
    if (num === 0) count.zeroes++;
  });

  const positivesToTotalRatio = (count.positives / totalItems).toFixed(6);
  const negativesToTotalRatio = (count.negatives / totalItems).toFixed(6);
  const zeroesToTotalRatio = (count.zeroes / totalItems).toFixed(6);

  console.log(
    `${positivesToTotalRatio}\n${negativesToTotalRatio}\n${zeroesToTotalRatio}`
  );
}

Enter fullscreen mode Exit fullscreen mode

Obrigado por ler!

Espero que tenha gostado da resolução do desafio, até a próxima!

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay