Nota: Este es el n. ° 3 en una serie de desafíos de manipulación de matrices . Para el desafío anterior, haga clic aquí .
Media móvil de una lista
El promedio móvil de una lista es un cálculo que resulta en una nueva lista suavizada, creada promediando pequeñas sublistas superpuestas del original.
Al crear un promedio móvil, primero generamos la lista de sublistas superpuestas usando un cierto 'tamaño de ventana', desplazando esta ventana hacia la derecha una vez cada vez.
Por ejemplo, dada la lista [8, 4, 6, 2, 2, 4]
y el tamaño de la ventana 3
, las sublistas serían:
[8, 4, 6, 2, 2, 4] Sublists:
( ) <- [8, 4, 6]
( ) <- [4, 6, 2]
( ) <- [6, 2, 2]
( ) <- [2, 2, 4]
Luego calculamos el promedio promedio de cada sublista para obtener el resultado: [6.0, 4.0, 3.3, 2.7]
(cada valor redondeado a un decimal).
El reto
Su tarea es escribir un programa o función que, dada una lista L , y un número entero 1 ≤ n ≤ longitud (L) , calcule el promedio móvil para L usando el tamaño de ventana n .
Reglas:
- Su programa puede usar división entera o división flotante. En el caso de la división flotante, se permiten pequeñas inexactitudes debido a las limitaciones del tipo de datos, siempre que el valor sea correcto.
- Puede enviar un programa completo o una función (pero no un fragmento).
- Puede suponer que la lista solo contendrá enteros positivos .
- Las lagunas estándar están prohibidas.
- Este es el código de golf , por lo que gana la respuesta más corta (en bytes).
Casos de prueba
Tenga en cuenta que, para facilitar la lectura, todos los valores se redondean a un 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]