Zadanie
Biorąc pod uwagę (w jakikolwiek sposób) posortowany zmiennoprzecinkowy zestaw danych, zwróć (w dowolny sposób iw granicach 1 ‰ prawidłowej wartości) średnią międzykwartylową .
Jeden możliwy algorytm
- Odrzuć najniższą i najwyższą czwartą punktów danych.
- Oblicz średnią (sumę podzieloną przez liczbę) pozostałych punktów danych.
Uwaga: Jeśli rozmiar zestawu danych nie jest równomiernie podzielony na cztery, należy zważyć punkty danych, które są wspólne dla podzestawów. Zobacz przykładową ocenę 2 poniżej.
Przykładowa ocena 1
Biorąc pod uwagę {1, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 38}
- Liczba danych wynosi 12, więc usuwamy najniższe i najwyższe 3 punkty danych:
{1, 3, 4,5, 6, 6, 7, 7, 8,8, 9, 38} - Średnia z pozostałych 6 punktów danych:
(5 + 6 + 6 + 7 + 7 + 8) / 6 = 6,5
Przykładowa ocena 2
Biorąc pod uwagę {1, 3, 5, 7, 9, 11, 13, 15, 17}
- Liczba wynosi 9, więc każdy kwartał ma 2 1/4 punktów danych:
{1, 2, (0,25 × 5),(0,75 × 5), 7, 9, 11, (0,75 × 13),(0,25 × 13), 15, 17} - Średnia z pozostałych 4,5 punktów danych:
(0,75 × 5 + 7 + 9 + 11 + 0,75 × 13) / 4,5 = 9
Pyth ,
1110 bajtówZestaw testowy.
Jak to działa
Czterokrotność listy danych wejściowych zapewnia, że liczba danych jest podzielna przez 4.
Nadal wymaga sortowania, ponieważ
*4
dotyczy całej listy zamiast każdego elementu.Następnie dzieli listę na cztery równe części, a następnie usuwa pierwszą i ostatnią część.
Pozostała lista jest spłaszczona i pobierana jest średnia.
źródło
MATL ,
1211 bajtówWejście jest wektorem poziomym o formacie
lub
Wypróbuj online!
Wyjaśnienie
źródło
6L)
usuwa pierwszy i ostatni element? Kiedy to robię, wypycha kilka liczb zespolonych.[2, -1+i]
Kiedy więc użyty jako indeks oznacza2:end-1
Bałwan , 66 bajtów
Wypróbuj online!
Używa tego samego algorytmu, co odpowiedzi @LeakyNun .
źródło
Python 3, 50 bajtów
Ideone to!
Jak to działa
To jest tłumaczenie mojej odpowiedzi w Pyth .
źródło
Galaretka ,
141312 bajtówWypróbuj online!
Zestaw testowy.
Jak to działa
To jest tłumaczenie mojej odpowiedzi w Pyth .
źródło
Pyke,
1613 bajtówWypróbuj tutaj!
źródło
Brachylog , 21 bajtów
Wypróbuj online! lub zweryfikuj wiele przypadków testowych
Wyjaśnienie
Jest to w zasadzie algorytm odpowiedzi Pyth @ LeakyNun.
Jedyną małą sztuczką jest pomnożenie przez odwrotność długości zamiast dzielenia przez długość, ponieważ podział między 2 liczbami całkowitymi jest dzieleniem liczb całkowitych.
źródło
Oktawa , 44 bajty
Definiuje to anonimową funkcję.
Dane wejściowe to wektor poziomy.
Wypróbuj na ideone .
Wyjaśnienie
Wejściowy wektor poziomy jest najpierw mnożony
*
przez macierz ( ) przez wektor kolumny czterech (zbudowany z~~(1:4)'
). Wynikiem jest macierz czterokolumnowa, w której każdy wiersz jest kopią wektora wejściowego. Jest to następnie przekształcane, przy zachowaniu liniowego porządku elementów, w 4-kolumnową macierz (reshape(...,[],4)
). Dwie środkowe kolumny są przechowywane ((:,2:3)
) i zlinearyzowane do pojedynczej kolumny ((:)
), z której obliczana jest średnia (mean(...)
).źródło
[x;x;x;x]
zamiast~~(1:4)'*x
@(x)mean([x;x;x;x](:)((b=numel(x))+1:3*b))
jest również 2 bajty mniej. Właśnie dlatego wymyśliłem, ale to w zasadzie to samo co twoje podejście.J ,
2018 bajtów2 bajty dzięki @miles
Wypróbuj online! ( Tłumacz online )
Stosowanie
Jak to działa
To jest tłumaczenie mojej odpowiedzi w Pyth .
źródło
-@#(+/%#)@}.#}.4#]
dla 18 bajtów .Faktycznie ,
201513 bajtówWypróbuj online!
Jak to działa
To jest tłumaczenie mojej odpowiedzi w Pyth .
źródło
Oktawa, 42 bajty
Kolejna anonimowa funkcja dla Octave.
Możesz spróbować online . Po prostu wprowadź to polecenie, a następnie wykonaj
ans([1 2 4 5 6 9])
dowolne wymagane liczby.Ten zaczyna się od utworzenia z tablicy wejściowej po jednym z 4 każdego elementu wejściowego, najpierw łącząc cztery kopie w pionie, a następnie spłaszczając go w pionie. Utrzymuje to porządek sortowania.
Następnie wyodrębnia zakres elementów z długości tablicy wejściowej plus 1 do trzykrotności długości tablicy wejściowej. Ponieważ nowa tablica jest cztery razy dłuższa, tnie górny i dolny kwartyl.
Na koniec zwracana jest średnia z nowej tablicy.
źródło
05AB1E, 15 bajtów
Wyjaśnienie
Wypróbuj online
źródło
APL (Dyalog) , 15 bajtów
Wypróbuj online!
4∘/
czterokrotnie każdy element-∘≢↓
upuść tyle końcowych elementów, ile jest elementów w argumentach≢↓
upuść tyle elementów wiodących, ile jest elementów w argumencie(
…)
Zastosuj następującą funkcję ukrytą:+/
Suma÷
podzielony przez≢
podsumowanieźródło
JavaScript (ES6), 75 bajtów
Korzysta z oczywistego poczwórnego sortowania i sortowania, i mogę zacząć używać
reduce
, co jest miłe. Jedyną sztuczką jest tutaj zapisanie 4 bajtów przez ponowne użycie komparatora sortowania, aby odjąć wszystkie elementy tablicy od zera, co daje mi-2l
razy odpowiedź, której chcę.źródło
Golfscript,
2829 bajtówWypróbuj online!
źródło
Właściwie 12 bajtów
Wypróbuj online! (obecnie nie działa, ponieważ TIO ma kilka wersji za sobą)
Wyjaśnienie:
źródło
Mathematica, 51 bajtów
Sortuje cztery kopie listy (aby zapobiec problemom z długością listy, a nie wielokrotnościami czterech), bierze udział
"1 quarter the length of resulting list plus 1"
w"1/4 length list + 1 from the end"
, pobiera jeMean
.źródło
Java
146126 bajtówTaki java dużo gadatliwy!
Starsze Ungolfed częściowo czytelne z przypadkami testowymi
źródło
Clojure,
8281 bajtówEdycja: 1 bajt mniej przez ponowne napisanie części „didvide by 2 n”.
Poprzedni:
Używa
for
do generowania 4 powtarzanych wartości, używając liczby zmiennoprzecinkowej,2.0
aby nie dać ułamkowych wyników, reszta jest tylko standardem.źródło
R
17 17bajtówZakładając, że
n
jest wektor wejściowy w standardowej postaci Rn=c(1, 2, 3, ...)
.Nie jest to niczym zaskakującym, ponieważ R można uznać za „język obliczeń statystycznych” i ma wiele wbudowanych funkcji statystycznych.
AKTUALIZACJA. Zapisano 6 bajtów dzięki rturnbull, ponieważ domyślnie
trim
jest to pierwszy opcjonalny argument!Przypadki testowe:
źródło
trim
jest to domyślny drugi argument, nie musisz go nazywać;0.25
można skrócić do.25
lub1/4
. Oszczędza to sześć bajtów.Excel, 17 bajtów
Zrelaksowany format wprowadzania ułatwia to. Wprowadź po jednym w wierszu w kolumnie A.
źródło