📝 Descrição
Given an array of integers, calculate the ratios of its elements that are positive, negative, and zero. Print the decimal value of each fraction on a new line with 6 places after the decimal.
Note: This challenge introduces precision problems. The test cases are scaled to six decimal places, though answers with absolute error of up to are acceptable.
📌 Exemplos
Examplo 1:
arr = [1, 1, 0, -1, -1]
O vetor possui 5 elementos dos quais 2 são positivos, 2 negativos e um neutro. Então, a proporção seria de:
Positivo: 2/5 = 0.4
Negativos 2/5 = 0.4
Neutros: 1/5 = 0.2
✅ Casos de teste
Caso 1
Entrada
6 -4 3 -9 0 4 1
Saída
0.50000
0.33333
0.16667
🚀 Como resolvi?
Há algumas formas de resolver esse problema. A gente até poderia usar um Counter, mas vamos estudar essa estrutura um pouco mais pra frente.
Independente da estrutura de dados, o problema se resume a:
- Identificar se um número é positivo, negativo ou neutro;2. Atualizar o contador correspondente;
- Retornar a quantidade de números positivos, negativos e neutros dividida pelo tamanho do vetor.
🛠️ Implementação
def plusMinus(arr):
quantity = {
'positive': 0,
'negative': 0,
'zero': 0
}
for num in arr:
if num < 0:
quantity['negative'] += 1
elif num > 0:
quantity['positive'] += 1
else:
quantity['zero'] += 1
total = len(arr)
for key in ['positive', 'negative', 'zero']:
print(f"{quantity[key] / total:.6f}")
🧠 O que aprendemos?
Dividir o problema em problema menores sempre nos ajudará.