Определим гиперсреднее для массива / списка (чисел) среднее арифметическое сумм его префиксов.
Например, гипер-среднее значение списка [1, 4, -3, 10]
рассчитывается следующим образом:
Мы получаем префиксы:
[1], [1, 4], [1, 4, -3], [1, 4, -3, 10]
.Сложите каждый:
[1, 5, 2, 12]
.А теперь получите среднее арифметическое элементов в этом списке:
(1 + 5 + 2 + 12) / 4 = 5
.
Псевдо-элемент массива является элементом, значение которого строго меньше , чем его гипер-среднего. Следовательно, псевдоэлементы нашего примера списка 1
,4
и -3
.
Учитывая список чисел с плавающей точкой, ваша задача - вернуть список псевдоэлементов.
Вам не нужно беспокоиться о неточностях с плавающей точкой.
Список ввода никогда не будет пустым и может содержать как целые числа, так и числа с плавающей точкой. Если упомянуто, целые числа могут быть взяты как числа с
<integer>.0
)Вы можете предположить, что цифры соответствуют выбранному вами языку, но, пожалуйста, не злоупотребляйте этим никоим образом.
При желании вы также можете использовать длину массива в качестве входных данных.
Это код-гольф , поэтому применяются стандартные правила для тега. Самый короткий код в байтах ( на каждом языке ) выигрывает!
Тестовые случаи
Вход -> Выход [10.3] -> [] [5.4, 5.9] -> [5.4, 5.9] [1, 4, -3, 10] -> [1, 4, -3] [-300, -20,9, 1000] -> [-300, -20,9] [3.3, 3.3, 3.3, 3.3] -> [3.3, 3.3, 3.3, 3.3] [-289,93, 912,3, -819,39, 1000] -> [-289,93, -819,39]
источник
Ответы:
MATL , 8 байт
Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
источник
05AB1E ,
98 байт-1 байт благодаря волшебной урне осьминога
Попробуйте онлайн!
05AB1E , 6 байтов
Используя новую
ÅA
команду.Попробуйте онлайн!
источник
ηOO¹g/›Ï
за 8; также это начинается сnOO!
.Japt v2.0a0,
121110 байтПроверь это
объяснение
Неявный ввод массива
U
.Filter (
f
) массив, проверяя, если каждый элемент меньше ...U
кумулятивно уменьшается (å
) путем суммирования ...Получившийся массив в свою очередь уменьшается путем суммирования ...
И делится на длину (
l
) изU
.Неявно выведите полученный массив.
источник
Python 3 с Numpy , 48 байтов
Вход и выход - массивы Numpy. Попробуйте онлайн!
источник
cumsum
!Желе , 9 байт
Попробуйте онлайн!
источник
<Ðf@
быть, вместо этого должно быть<Ðḟ@
?+\S÷L
вычисляет гипер-среднее значение, затем<Ðf@
ставит его в качестве правильного аргумента и<
возвращает,1
если элемент является псевдоэлементом, по существу фильтруя псевдоэлементы вместо фильтрации их.Python 2 ,
78767166 байт-7 байт благодаря мистеру Xcoder.
Попробуйте онлайн!
источник
range(len(l))
иl[:i+1]
для -2 байтов (не проверено)x>sum(...)
кx<sum(...)
для того , чтобы быть действительным, еще 76 байт<s>68</s>
66-байтовое решение: PHaskell, 39 байт
Попробуйте онлайн!
К сожалению ,
length
это типаInt
, поэтому я не могу использовать его с плавающей точкой разделения ,/
и я должен использовать обходной путь:sum(1<$l)
.источник
Шелуха ,
109 байтСпасибо @Zgarb за игру в 1 байт!
Попробуйте онлайн!
Ungolfed / Пояснение
источник
f</L⁰Σ∫⁰⁰
9 байт, но три лямбда-аргумента кажутся неуклюжими.JavaScript (ES6),
565552 байтаПроверь это
источник
Java 8, 81 байт
Это лямбда-выражение принимает
List<Float>
и мутирует его. Итератор списка ввода должен поддерживать удаление (ArrayList
например, делает). ПрисвоитьConsumer<List<Float>>
.Неуправляемая лямбда
Попробуйте онлайн
Подтверждения
источник
t/=l;
и изменивif(n<t)
наif(n<t/l)
.a->{float l=0,t=0,u;for(float n:a)t+=n*(a.size()-l++);u=t/l;a.removeIf(n->n>=u);}
(81 байт).C # (моно) , 95 байт
Попробуйте онлайн!
источник
Python 3 , 72 байта
Попробуйте онлайн!
источник
filter
что победит обычное понимание списка.Python 3 , 76 байт
Вход и выход представляют собой списки чисел. Попробуйте онлайн!
Это работает и в Python 2 (с очевидной заменой
print
синтаксиса в нижнем колонтитуле).источник
Perl 6 , 31 байт
Попробуйте онлайн!
источник
Pyth - 10 байт
Попробуйте это онлайн здесь .
источник
Pyth,
1211 байтов-1 байт благодаря мистеру Xcoder
Попробуйте онлайн!
источник
f<T.OsM._QQ
Perl 5 , 51 + 1 (-a) = 52 байта
Попробуйте онлайн!
источник
PHP, 84 байта
принимает входные данные из аргументов командной строки. Запустите
-nr
или попробуйте онлайн .суммирование частичных списков аналогично суммированию каждого элемента, умноженного на количество следующих элементов +1 → нет необходимости манипулировать громоздкими функциями массива. Это все еще долго, хотя.
источник
Röda ,
464139 байтПопробуйте онлайн!
источник
J 15 байт
Попробуйте онлайн! Ожидается массив в стиле J (негативы, представленные с использованием
_
вместо-
и элементов, разделенных пробелами - см. Ссылку на TIO для примеров).Я не знаю, есть ли способ убрать скобки вокруг среднего значения (
+/%#
), но удалив это, и колпачок был бы первым, что я попытался бы сделать, чтобы дальше играть в гольф.объяснение
Иногда J читает как (обфусцированный) английский.
источник
#~]<1#.+/\%#
R , 31 байт
Попробуйте онлайн!
источник
Mathematica, 35 байт
Function
который ожидает список чисел в качестве первого аргумента#
и длину списка в качестве второго аргумента#2
.#.Range[#2,1,-1]/#2
берёт скалярное произведение списка ввода#
и спискаRange[#2,1,-1] == {#2,#2-1,...,1}
, затем делит на длину#2
. Затем мы возвращаемCases
x_
в списке ввода#
который меньше гипер-среднего.Без длины в качестве второго аргумента нам нужно
6
больше байтов:источник
K (ок) , 26 байтов
Решение:
Попробуйте онлайн!
Примеры:
Объяснение:
Интерпретируется справа налево. Бороться с коротким способом извлечения префиксов:
Примечания:
Альтернативная версия, принимающая длину ввода в качестве параметра ( 25- байтовое решение):
источник
TI-Basic, 9 байтов
источник