LINQ: Datenstromanalyse mit Gruppierung und Filterung nach gleitendem Fenster

C# Hard LINQ

Aufgabe «LINQ: Datenstromanalyse mit Gruppierung und Filterung nach gleitendem Fenster»

Schreiben Sie ein Programm in C#, das eine Folge von ganzen Zahlen (mindestens 10) einliest. Verwenden Sie LINQ, um eine Analyse durchzuführen: Gruppieren Sie die Zahlen nach ihrem Wert und behalten Sie nur die Gruppen, bei denen die Anzahl der Elemente größer als 1 ist. Berechnen Sie dann für jede dieser Gruppen das arithmetische Mittel aller Elemente, die sich in einem gleitenden Fenster der Größe 3 befinden (d.h. für jedes Tripel aufeinanderfolgender Elemente in der ursprünglichen Sequenz, bei dem mindestens ein Element zur Gruppe gehört). Wenn das Fenster mindestens ein Element der Gruppe enthält, fügen Sie dessen Mittelwert zum Ergebnis hinzu. Geben Sie die absteigend sortierten Mittelwerte mit einer Genauigkeit von zwei Nachkommastellen aus. Wenn es keine passenden Fenster gibt, geben Sie "No data" aus.

Eingabeformat

In der ersten Zeile eine ganze Zahl N (10 ≤ N ≤ 1000). Danach N Zeilen, jede enthält eine ganze Zahl.

Ausgabeformat

Eine Zeile mit Zahlen, getrennt durch Leerzeichen, jede mit zwei Nachkommastellen, absteigend sortiert. Oder "No data".

Beispiele

Beispiel 1

EINGABE
12 1 2 2 3 4 4 5 6 6 7 8 8
AUSGABE
7.67 7.00 6.33 5.67 5.00 4.33 3.67 3.00 2.33 1.67

Beispiel 2

EINGABE
3 1 2 3
AUSGABE
No data
main.cs