Remarque: Il s'agit du n ° 3 d'une série de défis de manipulation de tableaux . Pour le défi précédent, cliquez ici .
Moyenne mobile d'une liste
La moyenne mobile d'une liste est un calcul résultant en une nouvelle liste lissée, créée en faisant la moyenne de petites sous-listes superposées de l'original.
Lors de la création d'une moyenne mobile, nous générons d'abord la liste des sous-listes qui se chevauchent en utilisant une certaine «taille de fenêtre», en déplaçant cette fenêtre vers la droite une fois à chaque fois.
Par exemple, étant donné la liste [8, 4, 6, 2, 2, 4]
et la taille de la fenêtre 3
, les sous-listes seraient:
[8, 4, 6, 2, 2, 4] Sublists:
( ) <- [8, 4, 6]
( ) <- [4, 6, 2]
( ) <- [6, 2, 2]
( ) <- [2, 2, 4]
Nous calculons ensuite la moyenne moyenne de chaque sous-liste pour obtenir le résultat: [6.0, 4.0, 3.3, 2.7]
(chaque valeur arrondie à une décimale).
Le défi
Votre tâche consiste à écrire un programme ou une fonction qui, étant donné une liste L et un entier 1 ≤ n ≤ longueur (L) , calcule la moyenne mobile de L en utilisant la taille de fenêtre n .
Règles:
- Votre programme peut utiliser une division entière ou une division flottante. Dans le cas de la division flottante, de petites inexactitudes dues aux limitations du type de données sont autorisées, tant que la valeur est par ailleurs correcte.
- Vous pouvez soumettre un programme complet ou une fonction (mais pas un extrait).
- Vous pouvez supposer que la liste ne contiendra que des entiers positifs .
- Les failles standard sont interdites.
- Il s'agit de code-golf , donc la réponse la plus courte (en octets) l'emporte!
Cas de test
Notez que, pour plus de lisibilité, toutes les valeurs sont arrondies à une décimale.
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]