Powiedzmy, że ta tablica pokazuje, ile pompek wykonałem każdego dnia w ciągu ostatnich 28 dni:
[
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
]
Jak widać, w ubiegłym tygodniu wzrósł gwałtowny trend wzrostowy i właśnie tę część danych najbardziej mnie interesuje. Im dalej w przeszłości, tym mniej chcę, aby te dane pojawiały się w mojej „średniej” „liczba pompek.
W tym celu chcę wypracować „średnią”, w której każdy tydzień jest wart więcej niż w poprzednim tygodniu.
Informacje podstawowe, nie będące częścią tego problemu.
Normalna średnia:
Suma wszystkich wartości / liczba wartości
Powyżej:
1440/28 = 51,42857142857143
Średnia ważona:
Podziel tablicę na 4 grupy po 7 i uruchom nową tablicę.
- Dodaj pierwszą grupę do tablicy.
- Dodaj drugą grupę do tablicy dwa razy.
- Dodaj trzecią grupę do tablicy trzy razy.
- Dodaj czwartą grupę do tablicy cztery razy.
Zsumuj wszystkie nowe tablice i podziel przez długość nowej tablicy.
Powyżej:
Konwertuj tablicę na to:
[
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
]
Następnie uruchom normalną średnią dla tej tablicy.
4310/70 = 61,57142857142857
Należy pamiętać, że jest wyższa niż normalna średnia wartość z powodu trendu wzrostowego w ostatnim tygodniu.
Zasady:
- Dane wejściowe to płaska tablica 28 nieujemnych liczb całkowitych.
- Dowolny język, w którym chcesz pisać.
- Podaj liczbę.
- Zawsze lubię widzieć linki do TIO .
- Spróbuj rozwiązać problem przy użyciu jak najmniejszej liczby bajtów.
- Wynik powinien być dziesiętny z dokładnością do co najmniej 4 miejsc po przecinku (skrócone lub zaokrąglone w górę od wartości przypadku testowego jest w porządku) lub dokładny ułamek.
Przypadki testowe:
Przypadek 1: Trend wzrostowy
[
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
]
Normalna średnia: 51,42857142857143 Średnia ważona: 61,57142857142857
Przypadek 2: Pozostawienie ciszy za sobą
(Miałem zły tydzień, ale to było jakiś czas temu)
[
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
]
Normalna średnia: 40 Średnia ważona: 42
Przypadek 3: poddanie się
Miałem zły tydzień, to szybko obniża moją średnią.
[
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
]
Normalna średnia: 40 Średnia ważona: 34
Przypadek 4: Uśrednianie
Okej, więc bawię się tutaj, myślałem, że może to być ta sama wartość dla normalnych i ważonych średnich, ale oczywiście tak nie było.
[
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
]
Normalna średnia: 31,25 Średnia ważona: 24,0
Problem bonusowy:
Która kombinacja 28 wartości miałaby tę samą średnią normalną i średnią ważoną?
Miłej gry w golfa!
new_avg = α*weekly_sum + (1-α)*old_avg
dla niektórychα∈(0,1)
0
Codziennie robię pompki, więc moja średnia ważona jest taka sama jak moja normalna średnia.