Скажімо, що цей масив - це кількість натискань, які я досягав щодня за останні 28 днів:
[
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
]
Як бачите, за останній тиждень ця тенденція зростала стрімко, і саме ця частина цих даних мене найбільше цікавить. Чим далі в минулому, тим менше я хочу, щоб ці дані відображалися в моєму "середньому" 'кількість віджимань.
З цією метою я хочу розробити «середній рівень», де кожен тиждень коштує більше, ніж попередній тиждень.
Довідкова інформація, яка не є частиною цієї проблеми.
Середнє середнє:
Сума всіх значень / кількість значень
Для вище:
1440/28 = 51,42857142857143
Середнє зважене:
Розділіть масив на 4 групи з 7 та запустіть новий масив.
- Додайте першу групу до масиву.
- Додайте другу масу до масиву двічі.
- Додайте третю групу до масиву тричі.
- Додайте четверту групу до масиву чотири рази.
Підсумовуйте весь новий масив і діліть на довжину нового масиву.
Для вище:
Перетворити масив у це:
[
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
]
Потім запустіть нормальне середнє на цьому масиві.
4310/70 = 61,57142857142857
Зауважте, що це вище звичайного середнього значення через тенденцію до зростання в останній тиждень.
Правила:
- Вхід - це плоский масив з 28 неотримних цілих чисел.
- Будь-якою мовою, на якій ви хочете написати.
- Виведіть число.
- Мені завжди подобається бачити посилання TIO .
- Спробуйте вирішити проблему в найменшій кількості байтів.
- Результат повинен бути десятковим з точністю до щонайменше 4 знаків після коми (або усічених, або округлих від значень тестового випадку - це добре) або точним дробом.
Тестові приклади:
Випадок 1: Зростання тенденції
[
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
]
Середнє середнє: 51.42857142857143 Середньозважене: 61.57142857142857
Випадок 2: Залишити затишшя позаду
(У мене був поганий тиждень, але це був деякий час тому)
[
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
]
Середня норма: 40 Середньозважена: 42
Випадок 3: Закінчення життя
У мене був поганий тиждень, це швидко тягне мою середню.
[
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
]
Середнє середнє: 40 Середньозважене: 34
Випадок 4: усереднення
Гаразд, тому я тут просто граю, я думав, що це може бути однакове значення для нормальних і зважених середніх значень, але, звичайно, це не було.
[
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
]
Середнє середнє: 31,25 Середньозважене: 24,0
Проблема з бонусом:
Яка комбінація з 28 значень мала б однакову середню середню і середньозважену?
Щасливого гольфу!
new_avg = α*weekly_sum + (1-α)*old_avg
для деякихα∈(0,1)
0
віджимання щодня, тому середнє середнє зважене значення є таким же, як і моє середнє.