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!

Top comments (0)