Hinweis: Dies ist die Nummer 3 in einer Reihe von Array-Manipulationsherausforderungen . Für die vorherige Herausforderung klicken Sie hier .
Gleitender Durchschnitt einer Liste
Der gleitende Durchschnitt einer Liste ist eine Berechnung, die zu einer neuen, geglätteten Liste führt, die durch Mitteln kleiner überlappender Unterlisten des Originals erstellt wird.
Bei der Erstellung eines gleitenden Durchschnitts wird zunächst die Liste der überlappenden Unterlisten mit einer bestimmten Fenstergröße erstellt, wobei dieses Fenster jedes Mal nach rechts verschoben wird.
Bei gegebener Liste [8, 4, 6, 2, 2, 4]
und Fenstergröße 3
wären die Unterlisten beispielsweise:
[8, 4, 6, 2, 2, 4] Sublists:
( ) <- [8, 4, 6]
( ) <- [4, 6, 2]
( ) <- [6, 2, 2]
( ) <- [2, 2, 4]
Wir berechnen dann den Mittelwert jeder Unterliste, um das Ergebnis zu erhalten: [6.0, 4.0, 3.3, 2.7]
(jeder Wert wird auf eine Dezimalstelle gerundet).
Die Herausforderung
Ihre Aufgabe ist es, ein Programm oder eine Funktion zu schreiben, die bei gegebener Liste L und einer ganzen Zahl von 1 ≤ n ≤ Länge (L) den gleitenden Durchschnitt für L unter Verwendung der Fenstergröße n berechnet .
Regeln:
- Ihr Programm kann eine Ganzzahl- oder eine Gleitkommadivision verwenden. Bei der Float-Division sind kleine Ungenauigkeiten aufgrund der Einschränkungen des Datentyps zulässig, sofern der Wert ansonsten korrekt ist.
- Sie können ein vollständiges Programm oder eine Funktion (aber kein Ausschnitt) einreichen.
- Sie können davon ausgehen, dass die Liste nur positive ganze Zahlen enthält .
- Standardlücken sind verboten.
- Das ist Code-Golf , also gewinnt die kürzeste Antwort (in Bytes)!
Testfälle
Beachten Sie, dass zur besseren Lesbarkeit alle Werte auf eine Dezimalstelle gerundet werden.
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]