DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Variação de Positivos e Negativos.

Com foco em melhorar ainda mais o rendimento e aprendizado em uma linguagem, também exercendo a lógica da programação, nessa nova série de resoluções irei demonstrar como resolvi certos conflitos de lógica: alguns simples, outros que necessitam de mais esforço.

Plus Minus

No episódio de hoje, veremos algo bem interessante.Teremos uma listagem de números dentro de um array, e nele teremos 2 números positivos, 2 negativos e 1 número zero. Nosso objetivo é pegar os valores positivos, negativos e zero, e dividir pelo número de parâmetros na função:

arr = [1,1,0,-1,-1]

0.500000
0.333333
0.166667
Enter fullscreen mode Exit fullscreen mode

É possível resolver esse desafio de muitas formas. A forma que fiz foi a seguinte:

function plusMinus(arr) {
    // Write your code here
    const all = arr.length
    let positive = 0, negative = 0, zero = 0;

    for (let i = 0; i < arr.length; i++){
      if (arr[i] > 0) positive++;
      if (arr[i] < 0) negative++;
      if (arr[i] === 0) zero++;   
    }
    let positiveVar = (positive / all).toFixed(6); 
    let negativeVar = (negative / all).toFixed(6);
    let zeroVar = (zero / all).toFixed(6);
  console.log(`${positiveVar}\n ${negativeVar}\n ${zeroVar}`)
}
Enter fullscreen mode Exit fullscreen mode

O código acima cria uma variável que vai pegar o comprimento do parâmetro posto no PlusMinus, após isso criasse uma variável que armazenará valores positivos, negativos e zero no futuro, mas que no momento começa em 0.

Após isso se coloca o for e cria um index i que estará ligado diretamente a arr.length que é o parâmetro pra comprimento.

if (arr[i] > 0) positive++;
if (arr[i] < 0) negative++;
if (arr[i] === 0) zero++; 
Enter fullscreen mode Exit fullscreen mode

Finalizando declara as variáveis de positivo, negativo e zero divididas pelo número de arr.length e com método .toFixed, e chamando elas no console.log.

Existe uma resolução alternativa para resolver essa questão, que consegue adquirir um resultado igual:

//codigo alternativo.
    /*let positive = (arr.filter(num => num > 0).length)/arr.length
    let negative = (arr.filter(num => num < 0).length)/arr.length
    let zero = (arr.filter(num => num == 0).length)/arr.length
    console.log(positive.toFixed(6))
    console.log(negative.toFixed(6))
    console.log(zero.toFixed(6))*/
Enter fullscreen mode Exit fullscreen mode

Com isso, finalizamos os problemas no HackerRank de hoje. Até a próxima!

Top comments (0)