Примітка. Це номер 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 ≤ довжина (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]