Скажем, этот массив - это количество отжиманий, которые я получал каждый день за последние 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
отжимания каждый день, поэтому мое средневзвешенное значение совпадает с моим обычным средним.Ответы:
Шелуха , 6 байт
Попробуйте онлайн!
Использует трюк, который Деннис использовал, чтобы превзойти мою подачу желе. Вместо того, чтобы повторять каждый фрагмент N раз, он извлекает суффиксы из списка фрагментов, которые после выравнивания будут давать тот же результат, за исключением порядка.
источник
Python 3 , 38 байт
Попробуйте онлайн!
источник
05AB1E ,
87 байтСохранено 1 байт благодаря Mr. Xcoder
Попробуйте онлайн!
объяснение
источник
Желе , 7 байт
Попробуйте онлайн!
Как это работает
источник
x"J$
эквивалентноṫJ
в этом контексте. Интересно!R + pryr,
3228 байти тот же средний балл неделя за неделей приведет к равенству средств.
Попробуйте онлайн!
Благодаря Giuseppe удалось сэкономить 4 байта с помощью точечного произведения .
Pure R будет использовать еще два байта
function
источник
sum
function(s)weighted.mean(s,rep(1:4,e=7))
weighted.mean
. Люблю, когдаR
обгоняетPython
.MATL , 10 байт
Попробуйте онлайн!
Я не отправлял ответ MATL в возрасте! Я подумал, что могу участвовать в LOTM в мае 2018 года !
Объяснение:
источник
K:7Y"*s70/
10 байтов.Желе , 9 байт
Попробуйте онлайн!
Как это работает
источник
Haskell , 35 байт
Бонус: если
a,b,c,d
еженедельные суммы, нормальное среднее равно средневзвешенному, если:Одно из решений состоит в том, когда первая и последняя недели имеют одинаковые суммы, а также вторая и третья недели имеют одинаковую сумму, но существует бесконечно много решений, если ваш бицепс до этого. Пример: [15,10,10,10,10,10,5,20,20,20,25,25,20,20,30,20,20,20,20,20,20,10,10,20 , 0,10,10,10]
Попробуйте онлайн!
источник
JavaScript (Node.js) , 49 байт
Попробуйте онлайн!
Не универсальное решение
JavaScript (Node.js) ,
3936 байтПопробуйте онлайн!
источник
a=>a.reduce((s,x,i)=>(I+=d=-~(i/7),s+x*d),I=0)/I
. И быстрый совет: используйте,<hr>
чтобы создать горизонтальную линию в уценке---
(нужен собственный абзац)?Stax , 6 байт
Запустите и отладьте его на staxlang.xyz!
Распаковывается (7 байт) и пояснение:
источник
Stax ,
108 байтЗапустите и отладьте его
Пояснение (без упаковки):
источник
$
для выравнивания, если все элементы являются целыми числами - теперь проверяем с помощью OP.Октава , 33 байта
Попробуйте онлайн!
источник
Древесный уголь , 14 байтов
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
источник
К4 / К (ОК) ,
191614 байтовРешение:
Попробуйте онлайн!
Пример:
Объяснение:
Оценка выполняется справа налево. Разделите 7 1s, 7 2s, 7 3s и 7 4s на 70, разделенные на входные данные; затем подведите итог.
источник
Excel: 33 байта
(3 байта сохранены из ответа @ wernisch, запустив данные в 2 строки из A1: N1 и A2: N2)
Извиняюсь за то, что не включил это как комментарий. У меня недостаточно репутации, чтобы сделать это.
источник
Japt ,
1110 байтПопробуй это
объяснение
источник
Треугольность , 49 байтов
Попробуйте онлайн!
объяснение
источник
Perl 5
-pa
, 28 байтПопробуйте онлайн!
Ввод разделен пробелом, а не запятыми.
источник
$.
наличии идеальный множитель. Нет необходимости$i
APL + WIN, 13 байт
Запрашивает массив как вектор целых чисел:
Объяснение:
источник
Java 8, 57 байт
Попробуйте онлайн.
Объяснение:
источник
J , 16 байт
Объяснение:
Попробуйте онлайн!
источник
Clojure,
4846 байтовЭто оказалось короче, чем комбинация mapcat + subvec.
источник
TI-Basic, 25 байтов
Альтернативный раствор, 39 байт
источник
Рубин , 65 байт
Попробуйте онлайн!
источник
size
свойства. Попробуйте онлайн!Excel,
3633 байта-3 байта благодаря @tsh.
Ввод в первом ряду (
A1
доAB1
).источник
A1:AB1
->1:1
?Юлия 0,6 , 27 байт
Попробуйте онлайн!
repeat
Вызов образует матрицу - столбец 28 значений, содержащий семь 1, а затем семь 2 - х и т.д. Затем мы транспонировать ее'
, а затем сделать матричное умножение с входом (mutiplication подразумевается здесь). Так как это матричное умножение матрицы 1x28 с матрицей 28x1, мы получаем одно значение, которое является необходимой нам взвешенной суммой. Разделите это,70
чтобы получить наше взвешенное среднее.источник