Diyelim ki bu dizi, son 28 günde her gün kaç tane basım gerçekleştirdiğim:
[
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
]
Gördüğünüz gibi, geçen hafta dik bir artış eğilimi var ve bu verilerin en çok ilgilendiğim kısmı. Geçmişte ne kadar fazla olursa, o verilerin ortalama 'basın sayısı.
Bu amaçla, her haftanın bir önceki haftadan daha değerli olduğu bir 'ortalama' çalışmak istiyorum.
Bu sorunun bir parçası değil, arka plan bilgileri.
Normal ortalama:
Tüm değerlerin toplamı / değer sayısı
Yukarıdakiler için:
1440/28 = 51.42857142857143
Ağırlıklı ortalama:
Diziyi 7 kişilik 4 gruba ayırın ve yeni bir dizi başlatın.
- Diziye ilk grubu ekleyin.
- İkinci grubu diziye iki kez ekleyin.
- Üçüncü grubu üç kez diziye ekleyin.
- Dördüncü grubu diziye dört kez ekleyin.
Tüm yeni diziyi toplayın ve yeni dizinin uzunluğuna bölün .
Yukarıdakiler için:
Diziyi şuna dönüştür:
[
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
]
Sonra bu dizide normal bir ortalama çalıştırın.
4310/70 = 61.57142857142857
Geçen haftaki artış eğilimi nedeniyle normal ortalama değerinden daha yüksek olduğunu unutmayın.
Kurallar:
- Giriş, 28 negatif olmayan tam sayıdan oluşan düz bir dizidir.
- Yazmak istediğiniz herhangi bir dil.
- Bir sayı çıkar.
- Her zaman TIO bağlantılarını görmek isterim .
- Sorunu en az sayıda baytla çözmeye çalışın.
- Sonuç, en az 4 ondalık basamağa (test kesesi değerlerinden kesilmiş veya yuvarlanmış) ondalık doğruluk veya kesin bir kesir olmalıdır.
Test senaryoları:
Durum 1: Artış eğilimi
[
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
]
Normal ortalama: 51.42857142857143 Ağırlıklı ortalama: 61.57142857142857
Durum 2: Durgunluğu geride bırakmak
(Kötü bir hafta geçirdim, ama bir süre önceydi)
[
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
]
Normal ortalama: 40 Ağırlıklı ortalama: 42
Durum 3: Vazgeçmek
Kötü bir hafta geçirdim, ortalamamı hızla aşağı çekiyor.
[
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
]
Normal ortalama: 40 Ağırlıklı ortalama: 34
Durum 4: Ortalama alma
Tamam, ben sadece burada oynuyorum, normal ve ağırlıklı ortalamalar için aynı değer olabileceğini düşündüm, ama tabii ki değildi.
[
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
]
Normal ortalama: 31.25 Ağırlıklı ortalama: 24.0
Bonus sorunu:
28 değerin hangi kombinasyonu aynı normal ortalama ve ağırlıklı ortalamaya sahip olur?
Mutlu golf!
new_avg = α*weekly_sum + (1-α)*old_avg
bazıları içinα∈(0,1)
0
Her gün baskı yapıyorum , bu yüzden ağırlıklı ortalamam normal ortalamamla aynı.