Definiujemy hiper-średnią tablicy / listy (liczb) średnią arytmetyczną sum sum jej prefiksów.
Na przykład hiper-średnia listy [1, 4, -3, 10]
jest obliczana w następujący sposób:
Otrzymujemy prefiksy:
[1], [1, 4], [1, 4, -3], [1, 4, -3, 10]
.Podsumowując każda: a
[1, 5, 2, 12]
.A teraz się średnią arytmetyczną z elementów tej listy:
(1 + 5 + 2 + 12) / 4 = 5
.
Pseudoelement tablicy jest elementem, którego wartość jest ściśle niższą od hiper-średniej. Stąd, pseudo-elementami listy przykładem są 1
, 4
i -3
.
Biorąc pod uwagę listę liczb zmiennoprzecinkowych, Twoim zadaniem jest zwrócenie listy pseudoelementów.
Nie musisz się martwić o niedokładności zmiennoprzecinkowe.
Lista wejściowa nigdy nie będzie pusta i może zawierać zarówno liczby całkowite, jak i zmiennoprzecinkowe. Jeśli wspomniano, liczby całkowite mogą być traktowane jako zmiennoprzecinkowe (z
<integer>.0
)Możesz założyć, że liczby pasują do twojego wybranego języka, ale proszę, nie nadużywaj tego w żaden sposób.
Opcjonalnie możesz również wziąć długość tablicy jako dane wejściowe.
To jest golf golfowy , więc obowiązują standardowe reguły dla tagu. Najkrótszy kod w bajtach ( w każdym języku ) wygrywa!
Przypadki testowe
Wejście -> Wyjście [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]
źródło
Odpowiedzi:
MATL , 8 bajtów
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
źródło
05AB1E ,
98 bajtów-1 bajty dzięki Magic Octopus Urn
Wypróbuj online!
05AB1E , 6 bajtów
Korzystanie z nowego
ÅA
polecenia.Wypróbuj online!
źródło
ηOO¹g/›Ï
dla 8; też zaczyna się odnOO!
.Japt v2.0a0,
121110 bajtówSprawdź to
Wyjaśnienie
Domniemane wejście tablicy
U
.Filtruj (
f
) tablicę, sprawdzając, czy każdy element jest mniejszy niż ...U
kumulatywnie zredukowane (å
) poprzez zsumowanie ...Z kolei wynikową tablicę zmniejszamy sumując ...
I podzielone przez długość (
l
) zU
.Niejawnie wypisuje wynikową tablicę.
źródło
Python 3 z Numpy , 48 bajtów
Wejścia i wyjścia to tablice Numpy. Wypróbuj online!
źródło
cumsum
!Galaretka , 9 bajtów
Wypróbuj online!
źródło
<Ðf@
zamiast tego powinno być<Ðḟ@
?+\S÷L
oblicza hiper-średnią, a następnie<Ðf@
umieszcza ją jako właściwy argument i<
zwraca,1
jeśli element jest pseudoelementem, zasadniczo filtrując pseudoelementy zamiast filtrować je.Python 2 ,
78767166 bajtów-7 bajtów dzięki Mr. Xcoder.
Wypróbuj online!
źródło
range(len(l))
il[:i+1]
za -2 bajty (nie testowane)x>sum(...)
nax<sum(...)
, aby była ona ważna, jeszcze 76 bajtów<s>68</s>
66-bajtowego rozwiązania: PHaskell, 39 bajtów
Wypróbuj online!
Niestety
length
jest typuInt
, więc nie można go używać z zmiennoprzecinkowych podział/
i muszę używać obejście:sum(1<$l)
.źródło
Łuska ,
109 bajtówDzięki @Zgarb za grę w golfa 1 bajtem!
Wypróbuj online!
Niegolfowane / Wyjaśnienie
źródło
f</L⁰Σ∫⁰⁰
ma 9 bajtów, ale trzy argumenty lambda wydają się nieporadne.JavaScript (ES6),
565552 bajtówSprawdź to
źródło
Java 8, 81 bajtów
To wyrażenie lambda akceptuje a
List<Float>
i mutuje je. Iterator listy danych wejściowych musi obsługiwać usuwanie (ArrayList
na przykład tak). Przypisz doConsumer<List<Float>>
.Niegolfowana lambda
Wypróbuj online
Podziękowanie
źródło
t/=l;
i zmieniającif(n<t)
naif(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 bajtów).C # (mono) , 95 bajtów
Wypróbuj online!
źródło
Python 3 , 72 bajty
Wypróbuj online!
źródło
filter
że wygra zwykłe rozumienie listy.Python 3 , 76 bajtów
Dane wejściowe i wyjściowe są listami liczb. Wypróbuj online!
Działa to również w Pythonie 2 (z oczywistym zamiennikiem
print
składni w stopce).źródło
Perl 6 , 31 bajtów
Wypróbuj online!
źródło
Pyth - 10 bajtów
Wypróbuj online tutaj .
źródło
Pyth,
1211 bajtów-1 bajt dzięki Mr. Xcoder
Wypróbuj online!
źródło
f<T.OsM._QQ
Perl 5 , 51 + 1 (-a) = 52 bajty
Wypróbuj online!
źródło
PHP, 84 bajty
pobiera dane wejściowe z argumentów wiersza poleceń. Uruchom
-nr
lub wypróbuj online .sumowanie list częściowych jest tym samym, co sumowanie każdego elementu pomnożonego przez liczbę kolejnych elementów +1 → nie ma potrzeby żonglowania dużymi funkcjami tablicy. Jednak wciąż jest długo.
źródło
Röda ,
464139 bajtówWypróbuj online!
źródło
J, 15 bajtów
Wypróbuj online! Oczekuje tablicy w stylu J (negatywy reprezentowane za pomocą
_
zamiast-
i elementy oddzielone spacjami - patrz link TIO dla przykładów).Nie wiem, czy istnieje sposób na usunięcie nawiasów wokół średniej (
+/%#
), ale usunięcie tego i ograniczenie byłoby pierwszą rzeczą, którą spróbowałem zrobić, aby dalej grać w golfa.Wyjaśnienie
Czasami J czyta jak (zaciemniony) angielski.
źródło
#~]<1#.+/\%#
R , 31 bajtów
Wypróbuj online!
źródło
Mathematica, 35 bajtów
Function
która oczekuje, że lista liczb będzie pierwszym argumentem,#
a długość listy - drugim argumentem#2
.#.Range[#2,1,-1]/#2
pobiera iloczyn punktowy z listy wejściowej#
i listyRange[#2,1,-1] == {#2,#2-1,...,1}
, a następnie dzieli przez długość#2
. Następnie zwracamyCases
x_
listę wejściową,#
która jest mniejsza niż hiper-średnia.Bez długości jako drugiego argumentu potrzebujemy
6
więcej bajtów:źródło
K (oK) , 26 bajtów
Rozwiązanie:
Wypróbuj online!
Przykłady:
Wyjaśnienie:
Interpretowane od prawej do lewej. Zmagał się z krótkim sposobem na wyodrębnienie prefiksów:
Uwagi:
Alternative version taking length of input as parameter (25 byte solution):
źródło
TI-Basic, 9 bytes
źródło