Diberikan input dari bilangan bulat n dan daftar bilangan bulat positif m 1 , m 2 , ..., mengeluarkan daftar bilangan bulat m 1 ' , m 2 ' , ... di mana m x ' didefinisikan sebagai rata-rata m xn hingga m x + n .
Saat menghitung rata-rata ini, abaikan indeks yang berada di luar batas (dan sesuaikan dengan apa Anda membagi jumlah dengan yang sesuai). n akan selalu ≥ 1 tetapi tidak pernah setengah dari panjang m (dibulatkan ke bawah) atau lebih. Ini berarti bahwa panjang minimum m adalah 4. Elemen-elemen dalam m akan menjadi bilangan bulat positif, tetapi output harus akurat ke setidaknya 3 tempat desimal.
Elemen input / output yang merupakan daftar dapat berupa string whitespace- / comma-dipisahkan atau array / daftar / dll. Untuk input, jika solusi Anda adalah sebuah fungsi, Anda juga dapat mengambil argumen pertama dari n dan argumen tambahan sebagai m x (ini berlaku untuk argumen baris perintah juga).
Berikut ini adalah representasi visual dari n=1
:
1 4 5 7 10
__/ | | |
L avg(1,4) = 2.5
| | |
\___/ | |
L avg(1,4,5) = 3.333
| |
\___/ |
L avg(4,5,7) = 5.333
|
\___/
L avg(5,7,10) = 7.333
\___
L avg(7,10) = 8.5
Final output: 2.5 3.333 5.333 7.333 8.5
Karena ini adalah kode-golf , kode terpendek dalam byte akan menang.
Kasus uji ( ini dilakukan secara manual; beri tahu saya jika ada kesalahan ):
In Out
----------------------------------------------------------------------
n=1, m=12 6 3 9 9 7 6 6
n=1, m=1 4 5 7 10 2.5 3.333 5.333 7.333 8.5
n=1, m=1 3 3 7 4 2 4 2 2 2.333 4.333 4.666 4.333 3.333 2.666 3
n=2, m=1 3 5 9 10 14 15 16 23 3 4.5 5.6 8.2 10.6 12.8 15.6 17 18
n=3, m=1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
n=3, m=1 2 3 4 5 6 7 8 2.5 3 3.5 4 5 5.5 6 6.5
sumber
avg(0,1,2)
tidak sama denganavg(1,2)
. Untuk "kasus tepi" (ha), Anda tidak boleh rata-rata sebanyak elemen dari daftar input.m_i
mereka positif.Jawaban:
Pyth, 20 byte
Suite uji
Cukup mudah, cukup potong bagian yang sesuai dari daftar, lalu rata-rata.
sumber
E
luar peta karena akan terus mencoba membaca nilai baru jika ada di dalam. Ini membuatnya membutuhkan jumlah byte yang sama.MATL ,
30282624 byteDiuji pada Matlab dan pada Oktaf. Penggunaan versi saat ini (9.1.0) dari bahasa / kompiler.
Input adalah: pertama nomor yang mengendalikan panjang jendela, kemudian array dengan format
[1 4 5 7 10]
.EDIT (20 Mei 2016): Cobalah online! Kode dalam tautan telah
X+
diganti olehY+
agar sesuai dengan versi 18.0.0 bahasa.Contoh
Penjelasan
Kode Matlab yang setara akan menjadi
Kode MATL memanfaatkan fitur yang baru ditambahkan dari input implisit dan clipboard fungsi-input otomatis:
sumber
CJam,
3130 byteFormat input adalah
n [m1 m2 ... mx]
.Jalankan semua test case. (Secara otomatis mengkonversi suite tes ke format input yang diperlukan.)
Ini bekerja dengan pra dan menambahkan
n
spasi, lalu mengambil semua substring panjang2n+1
, dan menghapus ruang lagi sebelum menghitung sarana mereka.sumber
Julia, 57 byte
Ini adalah fungsi yang menerima dua bilangan bulat dan mengembalikan array pelampung.
Pendekatan di sini sangat mudah. Kami membangun array baru dengan mengambil rata-rata bagian array input, memotong di depan dan belakang.
sumber
Haskell,
9795 byteContoh penggunaan:
2 # [1,3,5,9,10,14,15,16,23]
->[3.0,4.5,5.6,8.2,10.6,12.8,15.6,17.0,18.0]
.Bagaimana itu bekerja:
sumber
Pyth, 22 byte
Penjelasan:
Coba di sini .
sumber
JavaScript (ES6), 104
Menjalankan total / menjalankan ukuran sampel. Dalam Javascript, membaca nilai di luar batas array memberikan tidak terdefinisi, yang dapat dikonversi ke 0 menggunakan ~~
Tidak disatukan
Uji
sumber
JavaScript (ES6), 82 byte
kode:
uji:
sumber