Nota: Este é o número 3 em uma série de desafios de manipulação de array . Para o desafio anterior, clique aqui .
Média Móvel de uma Lista
A média móvel de uma lista é um cálculo que resulta em uma nova lista suavizada, criada pela média de pequenas sublistas sobrepostas do original.
Ao criar uma média móvel, primeiro geramos a lista de sublistas sobrepostas usando um certo 'tamanho da janela', deslocando essa janela para a direita uma vez a cada vez.
Por exemplo, dada a lista [8, 4, 6, 2, 2, 4]
e o tamanho da janela 3
, as sublistas seriam:
[8, 4, 6, 2, 2, 4] Sublists:
( ) <- [8, 4, 6]
( ) <- [4, 6, 2]
( ) <- [6, 2, 2]
( ) <- [2, 2, 4]
Em seguida, calculamos a média média de cada sub-lista para obter o resultado: [6.0, 4.0, 3.3, 2.7]
(cada valor arredondado para uma casa decimal).
O desafio
Sua tarefa é escrever um programa ou função que, dada uma lista L e um número inteiro 1 ≤ n ≤ length (L) , calcule a média móvel de L usando o tamanho da janela n .
Regras:
- Seu programa pode usar divisão inteira ou divisão flutuante. No caso da divisão de flutuação, pequenas imprecisões devido às limitações do tipo de dados são permitidas, desde que o valor esteja correto.
- Você pode enviar um programa completo ou uma função (mas não um trecho).
- Você pode assumir que a lista conterá apenas números inteiros positivos .
- As brechas padrão são proibidas.
- Isso é código-golfe , então a resposta mais curta (em bytes) vence!
Casos de teste
Observe que, para facilitar a legibilidade, todos os valores são arredondados para uma casa decimal.
n=5, [1, 2, 3, 4, 5, 6, 7, 8] -> [3, 4, 5, 6]
n=3, [100, 502, 350, 223, 195] -> [317.3, 358.3, 256]
n=1, [10, 10, 10] -> [10, 10, 10]
n=3, [10, 20, 30] -> [20]
n=2, [90, 40, 45, 100, 101] -> [65, 42.5, 72.5, 100.5]