LINQ: Анализ потока данных с группировкой и фильтрацией по скользящему окну
C#
Сложный
LINQ
Задача «LINQ: Анализ потока данных с группировкой и фильтрацией по скользящему окну»
Напишите программу на C#, которая считывает последовательность целых чисел (не менее 10). Используя LINQ, выполните анализ: сгруппируйте числа по значению, оставив только те группы, где количество элементов больше 1. Затем для каждой такой группы вычислите среднее арифметическое всех элементов, которые находятся в скользящем окне размера 3 (т.е. для каждой тройки подряд идущих элементов в исходной последовательности, где хотя бы один элемент принадлежит группе). Если окно содержит хотя бы один элемент группы, добавьте его среднее в результат. Выведите отсортированные по убыванию средние значения с точностью до двух знаков после запятой. Если подходящих окон нет, выведите "No data".
Формат ввода
В первой строке целое число N (10 ≤ N ≤ 1000). Далее N строк, каждая содержит одно целое число.
Формат вывода
Строка с числами, разделенными пробелом, каждое с двумя знаками после запятой, отсортированными по убыванию. Или "No data".
Примеры
Пример 1
ВВОД
12
1
2
2
3
4
4
5
6
6
7
8
8
ВЫВОД
7.67 7.00 6.33 5.67 5.00 4.33 3.67 3.00 2.33 1.67
Пример 2
ВВОД
3
1 2 3
ВЫВОД
No data
main.cs