Catatan: Ini adalah # 3 dalam serangkaian tantangan manipulasi array . Untuk tantangan sebelumnya, klik di sini .
Rata-Rata Bergerak dari Daftar
The rata-rata bergerak dari daftar adalah perhitungan menghasilkan baru, merapikan daftar, yang diciptakan oleh rata-rata sublists tumpang tindih kecil yang asli.
Saat membuat rata-rata bergerak, pertama-tama kami membuat daftar sublabel yang tumpang tindih menggunakan 'ukuran jendela' tertentu, menggeser jendela ini ke kanan satu kali setiap kali.
Misalnya, mengingat daftar [8, 4, 6, 2, 2, 4]
dan ukuran jendela 3
, sublists akan menjadi:
[8, 4, 6, 2, 2, 4] Sublists:
( ) <- [8, 4, 6]
( ) <- [4, 6, 2]
( ) <- [6, 2, 2]
( ) <- [2, 2, 4]
Kami kemudian menghitung rata - rata rata - rata setiap sublist untuk mendapatkan hasil: [6.0, 4.0, 3.3, 2.7]
(setiap nilai dibulatkan ke satu tempat desimal).
Tantangan
Tugas Anda adalah menulis program atau fungsi yang, diberi daftar L , dan bilangan bulat 1 ≤ n ≤ panjang (L) , menghitung rata-rata bergerak untuk L menggunakan ukuran jendela n .
Aturan:
- Program Anda dapat menggunakan divisi integer atau divisi float. Dalam kasus divisi float, ketidakakuratan kecil karena keterbatasan tipe data diizinkan, asalkan nilainya benar.
- Anda dapat mengirimkan program lengkap, atau suatu fungsi (tetapi bukan cuplikan).
- Anda dapat mengasumsikan bahwa daftar hanya akan berisi bilangan bulat positif .
- Celah standar dilarang.
- Ini kode-golf , jadi jawaban tersingkat (dalam byte) menang!
Uji Kasus
Perhatikan bahwa, untuk kemudahan keterbacaan, semua nilai dibulatkan ke satu tempat desimal.
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]