📝 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:

  1. Identificar se um número é positivo, negativo ou neutro;2. Atualizar o contador correspondente;
  2. 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á.