W matematyce jest całkiem sporo środków, takich jak średnia arytmetyczna, średnia geometryczna i wiele innych ...
Definicje i zadania
Zauważ, że są to definicje dwóch dodatnich liczb całkowitych *:
Średni kwadratowy wynosi pierwiastek kwadratowy z sumy kwadratów ich o połowę ( ).
Arytmetyczna jest ich suma, o połowę ( ).
Średnia geometryczna jest pierwiastek kwadratowy ich produktu ( ).
Średnia harmoniczna jest 2 podzieloną przez sumę ich odwrotne ( = ).
Biorąc pod uwagę dwie liczby całkowite a i b, takie, że a, b ∈ [1, + ∞) , sumują średnie wspomniane powyżej a i b . Twoje odpowiedzi muszą być dokładne z dokładnością do co najmniej 3 miejsc po przecinku, ale nie musisz się martwić błędami zaokrąglania lub zmiennoprzecinkowymi.
Przypadki testowe
a, b -> Dane wyjściowe 7, 6 -> 25,961481565148972 10, 10 -> 40 23, 1 -> 34,99131878607909 2, 4 -> 11,657371451581236 345, 192 -> 1051,7606599443843
Możesz zobaczyć poprawne wyniki dla większej liczby przypadków testowych za pomocą tego programu . To jest golf golfowy , więc wygrywa najkrótsza ważna wersja zgodna ze standardowymi zasadami.
* Istnieje wiele innych środków, ale do celów tego wyzwania użyjemy tych wymienionych w sekcji „Definicje”.
źródło
Odpowiedzi:
Haskell , 48 bajtów
Wypróbuj online!
Ta wykorzystuje fakt, że root-kwadrat, arytmetyka, harmoniczna i geometryczna środki są wszystkie szczególne przypadki uogólnionej średnia
((a**p+b**p)/2)**(1/p)
dlap=2,1,-1,0
. Średnia geometryczna wykorzystuje limitp->0+
, przybliżony jakop=1e-9
wystarczający do precyzji.źródło
Mathematica , 37 bajtów
-2 bajty dzięki Martinowi Enderowi. -6 bajtów dzięki Jenny_mathy i wielokrotnego użytku funkcji dzięki JungHwan Min.
Wypróbuj online!
Mathematica , 55 bajtów
Wypróbuj online!
¯ \ _ (ツ) _ / ¯
źródło
((#^2+#2^2)/2)^.5+(#+#2)/2+(#1#2)^.5+2#*#2/(#+#2)&
((#^2+#2^2)/2)^.5+(+##)/2+(1##)^.5+2/(1/#+1/#2)&
(((s=+##)^2-2##)/2)^.5+s/2+(1##)^.5+2##/s&
(2(s=+##/2)^2-t)^.5+s+(t=1##)^.5+t/s&
(t=1##)^.5+(2(s=+##/2)^2-t)^.5+s+t/s&
. Aby ułatwić ponowne użycie funkcji (bez konieczności uruchamianiaClear@t
przed każdą iteracją).Python 3 , 57 bajtów
Wypróbuj online!
źródło
<<1
Jedzie nieprawidłowo obciąć do liczby całkowitej, gdya
ib
są przeciwne parytety.>>1
./2
, co to kompensuje. Niezła sztuczka.R , 52 bajty
Wypróbuj online!
źródło
Haskell , 48 bajtów
Wypróbuj online!
Wyjaśnienie:
s/2 = (a+b)/2
: Średnia arytmetyczna.sqrt(s^2/2-p) = sqrt((a^2+2*a*b+b^2)/2-a*b) = sqrt((a^2+b^2)/2)
: Średni kwadrat pierwiastkowy.sqrt p = sqrt(a*b)
. Średnia geometryczna.2*p/s = 2*a*b/(a+b)
. Średnia harmoniczna.źródło
Oktawa ,
444241 bajtówWypróbuj online!
Zauważ, że TIO nie ma zainstalowanego pakietu sygnałów, więc zdefiniowałem to
rms()
w nagłówku. W Octave Online możesz spróbować, jeśli chceszpkg load nan
. Nie jestem pewien, czy są jakieś interpretery online, które ładują go domyślnie, ale większość systemów domyślnie miałaby ten pakiet ładowany.Podziękowania dla Toma Carpentera za wykrycie małego błędu 2 bajtów.
Definiuje to anonimową funkcję, przyjmującą dane wejściowe jako wektor
n=[a,b]
. Następnie używamy przypisania wbudowanego, aby zmniejszyć obliczenia HM do justz/q
.źródło
f=
kodu do kodu, dzięki czemu ma on 42 bajty. (co oczywiście prowadzi do „przekreślonego 44 wygląda jak 44”) - Wypróbuj online!^.5
zapisuje bajt nadsqrt
. Usuńf=
także część kodu w linkuGalaretka , 17 bajtów
Wypróbuj online!
źródło
PḤ÷S,µ³²Æm,P½,µÆmFS
(19 bajtów) - myślę, że warto o tym wspomnieć, może jest to źródło inspiracji. EDYCJA: > _> Teraz zdaję sobie sprawę, że mogę po prostu użyć+
zamiast,
½
razem i to uratowało bajt.PḤ÷S
może zostać zastąpiony przez:İSHİ
05AB1E ,
1816 bajtów-2 bajty dzięki Erikowi Outgolfer
Wyjaśnienie:
Wypróbuj online!
źródło
nO;t¹O;¹Pt2¹zO/O
[a, b]
.Łuska , 19 bajtów
Wypróbuj online!
-1 dzięki H.PWiz .
źródło
ö√½Σm□
może byćȯ√½ṁ□
MATL ,
211817 bajtówWypróbuj online!
-3 bajty dzięki Luisowi Mendo.
Wyjaśnienie
źródło
Ohm v2 , 16 bajtów
Wypróbuj online!
Wyjaśnienie
... jeśli Ohm miałby rodzaj gadatliwy. : P
źródło
TI-Basic (TI-84 Plus CE),
2725 bajtów-2 bajty od Scrooble
Pobiera listę dwóch liczb
Ans
i domyślnie zwraca sumę czterech średnich; np. biegnij z,{7,6}:prgmNAME
aby dostać25.96148157
.Wyjaśnienie:
√(sum(Ans2)/2)
: 8 bajtów: średnia kwadratowamean(Ans)
:53 bajty: średnia arytmetyczna (starasum(Ans)/2
:)2prod(Ans)/sum(Ans)
: 8 bajtów: średnia harmoniczna√(prod(Ans
: 3 bajty: średnia geometryczna+3 bajty na 3
+
esźródło
sum(Ans)/2)
.mean(
wbudowanemu.SOGL V0.12 , 22 bajty
Wypróbuj tutaj!
źródło
Dyalog APL , 44 bajty
Wypróbuj online!
Dyadic dfns z
a
po lewej ib
po prawej stronie.źródło
JavaScript, 47 bajtów
całkiem trywialne
Pokaż fragment kodu
źródło
Java 8, 63 bajty
Pobiera zarówno parametry jak
Double
i wyjścia jakoDouble
.Wypróbuj tutaj.
Lub (także 63 bajty ):
Pobiera zarówno parametry jak
Integer
i wyjścia jakoDouble
.Wypróbuj tutaj.
źródło
Python 2 , 58 bajtów
Wypróbuj online!
Pobiera dane jako zmiennoprzecinkowe
źródło
ARBLE ,
4945 bajtów-4 bajty dzięki Mr. Xcoder
Wypróbuj online!
źródło
Właściwie 15 bajtów
Wypróbuj online!
Yay Właściwie ma wbudowany Root Square Mean!
źródło
Julia ,
4947 bajtówWypróbuj online!
źródło
Groovy, 54 bajty
-2 dzięki Mr. Xcoder za edycję, która sprawiła, że poczułem się głupio.
źródło
a**2
za*a
ib**2
zb*b
C # (.NET Core) , 76 bajtów
+13 bajtów dla
using System;
Wypróbuj online!
źródło
using System;
usuwając obaSystem.
. PS: Jeśli chcesz mniej nudny sposób (z dokładnie tym samym bajt-count z 76)using System;a=>b=>(a+b+Math.Sqrt(a*a+b*b<<1))/2+Math.Sqrt(a*b)+2d*a*b/(a+b)
. ;)Jq 1,5 , 76 bajtów
Rozszerzony
Wypróbuj online!
źródło