Примечание. Это №3 в серии задач по обработке массивов . Для предыдущего вызова нажмите здесь .
Скользящая средняя списка
Скользящее среднее из списка является вычисление приводит к новому, сглаживаются список, созданного путем усреднения небольших перекрывающихся подсписков оригинала.
При создании скользящего среднего мы сначала генерируем список перекрывающихся подсписков, используя определенный «размер окна», каждый раз сдвигая это окно вправо.
Например, учитывая список [8, 4, 6, 2, 2, 4]
и размер окна 3
, подсписки будут:
[8, 4, 6, 2, 2, 4] Sublists:
( ) <- [8, 4, 6]
( ) <- [4, 6, 2]
( ) <- [6, 2, 2]
( ) <- [2, 2, 4]
Затем мы вычисляем среднее значение каждого подсписка, чтобы получить результат: [6.0, 4.0, 3.3, 2.7]
(каждое значение округляется до одного десятичного знака).
Соревнование
Ваша задача - написать программу или функцию, которая, учитывая список L и целое число 1 ≤ n ≤ length (L) , вычисляет скользящее среднее для L, используя размер окна n .
Правила:
- Ваша программа может использовать целочисленное деление или деление с плавающей запятой. В случае деления с плавающей запятой допускаются небольшие неточности из-за ограничений типа данных, при условии, что значение является правильным.
- Вы можете отправить полную программу или функцию (но не фрагмент).
- Вы можете предположить, что список будет содержать только положительные целые числа .
- Стандартные лазейки запрещены.
- Это код-гольф , поэтому выигрывает самый короткий ответ (в байтах)!
Тестовые случаи
Обратите внимание, что для удобства чтения все значения округлены до одного десятичного знака.
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]