(paradoks, paradoks, najbardziej genialny paradoks)
To pierwsza część wieloczęściowej serii inspirowanej różnymi funkcjami R.
Zadanie
Biorąc pod uwagę zestaw danych dodatnich liczb całkowitych, musisz obliczyć podsumowanie 5 liczb z . Pracuję jednak nad dużymi zestawami danych, więc chcę, aby Twój kod był tak mały, jak to możliwe, co pozwala mi przechowywać go na moim komputerze.
Pięć liczbowe podsumowanie składa się z:
- Minimalna wartość
- Pierwszy kwartyl (Q1)
- Mediana / Drugi kwartyl (Q2)
- Trzeci kwartyl (Q3)
- Maksymalna wartość
Istnieje kilka różnych sposobów definiowania kwartyli, ale użyjemy tego zaimplementowanego przez R:
Definicje:
- Minimum i maksimum: odpowiednio najmniejsza i największa wartość.
- Mediana: środkowa wartość, jeśli ma nieparzystą liczbę wpisów, i średnia arytmetyczna z dwóch środkowych wartości, jeśli ma parzystą liczbę wpisów. Zauważ, że oznacza to, że mediana może być wartością niecałkowitą. Wcześniej musieliśmy obliczyć medianę .
- Pierwszy i trzeci kwartyl: Podziel dane na dwie połowy, w tym środkowy element w każdej połowie, jeśli ma nieparzystą liczbę wpisów, i znajdź medianę każdej połowy. Mediana dolnej połowy to pierwszy kwartyl, a mediana górnej połowy to trzeci kwartyl.
Przykłady:
. Mediana wynosi wtedy , a dolna połowa to , co daje pierwszy kwartyl o wartości , a górna połowa to , co daje trzeci kwartyl o wartości .
. Mediana wynosi , a dolna połowa wynosi , dając pierwszy kwartyl , a górna połowa wynosi [ 5 , 6 , 7 , 10 ] , dając trzeci kwartyl 6,5 .
Dodatkowe zasady:
- Dane wejściowe są w postaci tablicy lub najbliższego odpowiednika Twojego języka.
- Możesz założyć, że tablica jest posortowana w porządku rosnącym lub malejącym (ale określ, które).
- Możesz zwrócić / wydrukować wyniki w dowolnej spójnej kolejności oraz w dowolnym elastycznym formacie, który ci się podoba, ale proszę podać kolejność i format w odpowiedzi.
- Wbudowane funkcje równoważne
fivenum
są dozwolone, ale proszę również zaimplementować własne rozwiązanie. - Być może nie zakładamy każdego z pięciu liczb będzie liczbą całkowitą.
- Wyjaśnienia są zachęcane.
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w każdym języku!
Losowo generowane przypadki testowe
1 1 1 1 1 2 2 2 2 2 3 3 4 4 4 4 4 5 5 5 -> 1 1.5 2.5 4 5
1 2 2 2 4 4 5 5 6 7 7 8 9 9 9 9 9 10 10 10 -> 1 4 7 9 10
2 2 2 6 8 10 15 16 21 22 23 24 26 33 35 38 38 45 46 47 48 -> 2 10 23 38 48
1 2 9 -> 1 1.5 2 5.5 9
1 2 3 3 3 4 9 -> 1 2.5 3 3.5 9
1 1 2 5 7 7 8 8 15 16 18 24 24 26 26 27 27 28 28 28 29 29 39 39 40 45 46 48 48 48 48 49 50 52 60 63 72 73 79 85 86 87 88 90 91 93 94 95 95 97 100 -> 1 25 45 76 100
2 2 4 4 6 8 10 11 13 14 14 15 17 21 23 24 26 27 27 28 28 30 31 33 33 34 36 36 38 38 39 40 41 42 42 43 45 45 47 47 47 47 47 48 48 48 50 51 53 53 55 56 56 56 57 57 58 62 62 63 64 64 65 65 66 67 67 67 68 69 69 71 71 71 74 79 80 81 81 81 82 82 83 83 86 86 86 87 89 94 94 94 95 95 97 98 99 100 100 100 -> 2 33.5 54 76.5 100
1 3 3 4 -> 1 2 3 3.5 4
1 3 3 3 4 -> 1 3 3 3 4
źródło
quantile
zwraca nazwany wektor, podczas gdy niefivenum
ma nazwy. Może to problem poniżej tego, gdziefivenum
jest używany?unname()
rozwiązałoby to. Może istnieją powody historyczne?fivenum
danych wejściowych o długości 3 mod 4, w tym dwóch przypadków testowych.MATL , 18 bajtów
Kolejność produkcji rośnie, podobnie jak w przypadkach testowych.
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
MATL, podobnie jak MATLAB, oblicza kwantyle przy użyciu interpolacji liniowej, jeśli to konieczne (tak jak określono w wyzwaniu dla mediany). Aby osiągnąć wymagane zachowanie dla pierwszego i trzeciego kwartylu, wystarczy powtórzyć medianę, jeśli długość danych wejściowych jest nieparzysta. Zatem wyniki to tylko kwantyle 0, .25, .5, .75 i 1.
źródło
Galaretka , 13 bajtów
Wypróbuj online!
Zamówienie:
[Q1, Q3, Q2/med, min, max]
.źródło
Python 3.8 (wersja wstępna) , 66 bajtów
Wypróbuj online!
Wejścia i wyjścia są w porządku rosnącym.
źródło
Python 3.8, 97 bajtów
Zakłada się, że lista wejściowa jest sortowana w porządku rosnącym.
f
jest funkcją zwracającą 5-cyfrowe podsumowanie.Zdjąłem kilka bajtów, czerpiąc wskazówki z odpowiedzi FlipTacka na Compute the Median.
Wypróbuj online!
Jak to działa?
źródło
Węgiel drzewny , 33 bajty
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjścia w kolejności rosnącej lub malejącej w zależności od tego, czy dane wejściowe są w kolejności rosnącej czy malejącej. Wyjaśnienie:
Pobierz indeks ostatniego elementu.
Zamapuj elementy poniższej tablicy i rzutuj wynik na ciąg znaków w celu niejawnego drukowania w osobnych wierszach.
Oblicz pozycje elementów kwartylowych, gdzie dodatkowa
0.5
oznacza, że wartość jest średnią dwóch sąsiednich elementów.Oblicz kwartyl dla każdej pozycji, biorąc średnią wartości na podłodze i suficie pozycji.
źródło
Ruby 2.7-Preview1 , 59 bajtów
Bezpośredni port
ripoffdla odpowiedzi xnor na Python .Wypróbuj online! (jeden bajt dłużej, ponieważ TiO używa Ruby 2.5 i nie ma np . numerowanych parametrów bloku
@1
).źródło
C (gcc) ,
123121119 bajtów-2 dzięki pułapce cat.
Zakłada listę posortowaną w porządku rosnącym.
Wyjścia w kolejności: min, Q1, Q2, Q3, max.
Wypróbuj online!
źródło
05AB1E , 18 bajtów
Wyjście zamówienie jest:
[Q1, Q3, Q2, min, max]
.Wypróbuj online lub sprawdź wszystkie przypadki testowe . (Dodałem sortowanie
{
dla zestawu testów, więc przypadki testowe są łatwiejsze do zweryfikowania w kolejności[min, Q1, Q2, Q3, max]
).Wyjaśnienie:
źródło