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]
Jawaban:
Jelly , 3 byte
Cobalah online!
Cukup sederhana berkat
ṡ
Bagaimana itu bekerja
sumber
Bahasa Wolfram (Mathematica) , 13 byte
Mathematica memiliki bawaan untuk semuanya
Cobalah online!
Mengambil daftar dan kemudian jari-jari ...
sumber
MovingAverage
ಠ _____ ಠ Saya menolak untuk percaya iniMovingAverage
mengembalikan satu set pecahan. Sekarang sudah diizinkan oleh OP,MovingAverage
sudah cukup.Haskell , 47 byte
Cobalah online!
Disimpan dua byte berkat xnor!
sumber
tail a
dapat diekstraksi di penjaga.Dyalog APL, 4 byte
1 byte disimpan berkat @Graham
2 byte disimpan berkat @ jimmy23013
Apakah saya menyebutkan APL bukan bahasa golf?
dengan
n
di sebelah kanan, ataudengan
L
di sebelah kanan.Cobalah online!
Bagaimana?
÷
- dibagiL
dengann
⊢+/
- Mengurangi+
pada windowsn
sumber
Python , 48 byte
Cobalah online!
Fungsi rekursif. Lebih pendek dari program (50 byte)
Cobalah online!
Ini menghemat 2 byte dengan mengakhiri dengan kesalahan pada
while
kondisi.sumber
Mintalah , 3 byte
Cobalah online!
sumber
Perl 6 , 33 byte
Menguji
Diperluas:
sumber
C,
868483 byteCobalah online!
Belum dibuka:
sumber
J,
75 byteCobalah online!
Dibawa
n
sebagai argumen kanan dan daftar sebagai kiri. Penghargaan untuk solusi Uriel untuk ide melakukan penjumlahan di infiks.Penjelasan
Solusi sebelumnya (7 byte)
sumber
Ohm v2 , 3 byte
Cobalah online!
Penjelasan:
sumber
Pyth , 5 byte
Coba di sini!
Bagaimana ini bekerja?
sumber
Oktaf ,
3331 byteCobalah online!
Penjelasan
Konvolusi (
conv
) pada dasarnya adalah jumlah tertimbang yang bergerak. Jika bobot dipilih sebagai[1/n, ..., 1/n]
(diperoleh sebagai~~(1:n)/n
) hasilnya adalah rata-rata bergerak, yang hanya'valid'
bagian yang disimpan.sumber
R , 72 byte
Cobalah online!
Menghitung
mean
semua ukurann
jendela; ketika jendela melewati tepil
, hasilnyaNA
jadi kami menyaringnya.Paket R + kebun binatang, 13 byte
The
zoo
paket (infrastruktur S3 untuk Regular dan Irregular Time Series) memiliki banyak fungsi berguna. Anda dapat mencobanya di sini (R-biola) .sumber
Japt v2.0a0, 7 byte
Cobalah
Penjelasan
Input implisit dari array
U
dan integerV
.Dapatkan subbagian
U
dengan panjangV
Peta di atas subbagian.
Bagilah setiap elemen dengan
V
.Jumlahkan semua elemen.
sumber
Python 3 , 61 byte
Cobalah online!
sumber
Python 3 , 55 byte
Cobalah online!
sumber
05AB1E , 5 byte
Penjelasan:
Cobalah online!
sumber
Mathematica, 21 byte
Cobalah online!
-3 byte JungHwan Min
sumber
N[Mean/@##~Partition~1]&
Proton , 46 byte
Cobalah online!
Perhatikan bahwa ini mengambil input melalui sintaks fungsi currying, dan mengembalikan daftar fraksi.
sumber
CJam,
1412 byte-2 byte terima kasih kepada @aditsu
sumber
Jq 1,5 , 61 byte
Diperluas
Cobalah online!
sumber
JavaScript (ES6), 53 byte
sumber
PHP, 94 byte
Cobalah online!
sumber
Clojure , 48 byte
Cobalah online!
sumber
Ditumpuk , 22 byte
Cobalah online!
Penjelasan
infixes
menghasilkan semua jendela dengan panjang yang diberikan. Kemudian, kami memetakan fungsi rata-rata kami sendiri untuk setiap infiks.sumber
Gangguan Umum , 77 byte
Cobalah online!
sumber
K (oK) ,
1311 byteLarutan:
Cobalah online!
Contoh:
Penjelasan:
oK
memiliki built-in untuk membuat jendela geser, lalu jumlah array yang dihasilkan dan bagi dengan ukuran jendela geser untuk mendapatkan rata-rata:sumber
x%[commute]
ke kiri dan melepas parensDataWeave , 50 byte
sumber
Funky ,
6766 byteMenyimpan byte dengan sintaks kari.
Cobalah online!
sumber
Java 8, 111 byte
Penjelasan:
Coba di sini.
sumber