Скажем, этот массив - это количество отжиманий, которые я получал каждый день за последние 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
отжимания каждый день, поэтому мое средневзвешенное значение совпадает с моим обычным средним.