Zerando HackerRank ( 5 )
Published: 2023-03-02 04:05:53

Neste desafio o problema a ser resolvido é um pouco mais complexo. Nele vamos receber uma array de números que podem ser tanto números positivos, negativos ou o valor 0.
A proposta do exercício visa retornar a proporção destes números em relação ao valor inteiro.
Como no exemplo abaixo:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6iay7zlfs624lw4w4bjs.png)

Para fazer isso, logicamente vamos dividir o valor de números positivos, negativos e zeros pela quantidade de itens da nossa array.

A primeira variável que precisamos encontrar precisa fazer referência ao tamanho da nossa array como pode ser visto abaixo:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ufkx55v3doelijpu235m.png)

Depois disso é necessário a criação de 3 variáveis, a primeira representa a quantidade de números acima de 0, a segunda serão números a baixo de zero e a terceira números iguais a zero.
Iremos representar estes números da seguinte maneira:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fw1t7v3633qmsni0eccz.png)

A primeira vista este trecho de código pode causar uma certa estranheza como foi para mim, mas este trecho de codigo significa o mesmo que três variáveis escritas desta forma:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ma14pqp7j8de5nbzjwde.png)

Como podemos observar, as três variáveis fazem um papel importante começando com zero para depois serem modificadas.
Vamos utilizar um método já utilizado em exercícios anteriores para incrementá-lo. Usaremos um _FOR_ com 3 condicionais que farão este incremento dos valores, desta forma:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1smrraql3sneqptjo8wk.png)

Desta forma vamos percorrer o array e no caso de um número acima de 0 adicionaremos +1 a variável "positiveCount", no caso de uma variável a baixo de 0 adicionaremos +1 a variável "negativeCount" e números iguais a zero adicionaremos +1 a variável "zeroCount".

Depois disso vamos criar 3 novas variáveis:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t3tv5ldbrk2gknl97r0j.png)

Essas 3 variáveis são simplesmente os valores de números positivos, negativos e zeros divididos pelo valor do tamanho da array, porem é utilizado o método de javascript toFixed() para serem apresentadas mais casas decimais. 
Conforme pedido no exercício, 6 casas decimais a baixo da vírgula.

Por último, mas não menos importante, no exercício é pedido para os dados retornados sejam enviados a partir de um console.log, mas mais que isso, eles devem ser enviados um abaixo do outro desta forma:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uwrjzteu56kt3topy46w.png)

Para fazer isso faremos o codigo da seguinte forma:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1o9zxoqv5ewzuk1i4499.png)

Ao utilizar template string junto a espaçadores representados por "\n" é possível pular linhas e por fiz retornar os valores como foram pedidos.

Utilizando essas logicas nossa função vai ficar assim:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jh3jtiijre1k4bncmq9v.png)