Katakanlah array ini adalah berapa banyak press-up yang saya capai setiap hari dalam 28 hari terakhir:
[
20,20,20,30,30,30,30,
35,35,40,40,40,45,45,
50,50,50,50,50,50,50,
60,70,80,90,100,110,120
]
Seperti yang Anda lihat, ini mengambil tren kenaikan yang tajam pada minggu lalu, dan itulah bagian dari data ini yang paling saya minati. Semakin jauh di masa lalu, semakin sedikit yang saya inginkan agar data ditampilkan dalam rata-rata saya 'Jumlah press-up.
Untuk itu, saya ingin mencari 'rata-rata' di mana setiap minggu bernilai lebih dari minggu sebelumnya.
Informasi latar belakang, bukan bagian dari masalah ini.
Rata-rata normal:
Jumlah semua nilai / jumlah nilai
Untuk di atas:
1440/28 = 51.42857142857143
Rata-rata tertimbang:
Membagi array menjadi 4 kelompok 7, dan memulai array baru.
- Tambahkan grup pertama ke array.
- Tambahkan grup kedua ke array dua kali.
- Tambahkan grup ketiga ke array tiga kali.
- Tambahkan grup keempat ke array empat kali.
Jumlahkan semua array baru, dan bagi dengan panjang array baru .
Untuk di atas:
Konversi array menjadi ini:
[
20,20,20,30,30,30,30, # first week once
35,35,40,40,40,45,45,
35,35,40,40,40,45,45, # second week twice
50,50,50,50,50,50,50,
50,50,50,50,50,50,50,
50,50,50,50,50,50,50, # third week thrice
60,70,80,90,100,110,120,
60,70,80,90,100,110,120,
60,70,80,90,100,110,120,
60,70,80,90,100,110,120 # Fourth week four times
]
Kemudian jalankan rata-rata normal pada array itu.
4310/70 = 61.57142857142857
Perhatikan bahwa ini lebih tinggi dari nilai rata-rata normal karena tren kenaikan dalam minggu terakhir.
Aturan:
- Input adalah array datar dari 28 bilangan bulat non-negatif.
- Bahasa apa pun yang ingin Anda tulis.
- Keluarkan angka.
- Saya selalu suka melihat tautan TIO .
- Cobalah untuk memecahkan masalah dalam jumlah byte terkecil.
- Hasilnya harus menjadi desimal akurat untuk setidaknya 4 tempat desimal (baik terpotong atau dibulatkan dari nilai-nilai kasus uji baik-baik saja) atau fraksi yang tepat.
Kasus uji:
Kasus 1: Tren naik
[
20,20,20,30,30,30,30,
35,35,40,40,40,45,45,
50,50,50,50,50,50,50,
60,70,80,90,100,110,120
]
Rata-rata normal: 51.42857142857143 Rata-rata tertimbang: 61.57142857142857
Kasus 2: Meninggalkan jeda di belakang
(Saya mengalami minggu yang buruk, tapi itu beberapa waktu yang lalu)
[
50,50,50,50,50,50,50,
10,10,10,10,10,10,10,
50,50,50,50,50,50,50,
50,50,50,50,50,50,50
]
Rata-rata normal: 40 Rata-rata tertimbang: 42
Kasus 3: Menyerah
Saya mengalami minggu yang buruk, ini menurunkan rata-rata saya dengan cepat.
[
50,50,50,50,50,50,50,
50,50,50,50,50,50,50,
50,50,50,50,50,50,50,
10,10,10,10,10,10,10
]
Rata-rata normal: 40 Rata-rata tertimbang: 34
Kasus 4: Rata-rata keluar
Oke, jadi saya hanya bermain-main di sini, saya pikir itu mungkin nilai yang sama untuk rata-rata normal dan tertimbang, tetapi, tentu saja, tidak.
[
60,60,60,60,60,60,60,
30,30,30,30,30,30,30,
20,20,20,20,20,20,20,
15,15,15,15,15,15,15
]
Rata-rata normal: 31.25 Rata-rata tertimbang: 24.0
Masalah bonus:
Kombinasi 28 nilai apa yang akan memiliki rata-rata normal dan rata-rata tertimbang yang sama?
Selamat bermain golf!
new_avg = α*weekly_sum + (1-α)*old_avg
untuk beberapaα∈(0,1)
0
press-up setiap hari, jadi rata-rata tertimbang saya sama dengan rata-rata normal saya.