Existem alguns meios na matemática, como a média aritmética, a média geométrica e muitos outros ...
Definições e Tarefa
Observe que estas são as definições para dois números inteiros positivos *:
O quadrado médio da raiz é a raiz quadrada da soma dos quadrados divididos pela metade ( ).
A média aritmética é sua soma, reduzida pela metade ( ).
A média geométrica é a raiz quadrada do produto ( ).
A média harmônica é 2 dividida pela soma de seus inversos ( = ).
Dado dois inteiros um e b de tal forma que a, b ∈ [1, + ∞) , somar os meios acima mencionados de um e b . Suas respostas devem ser precisas com pelo menos três casas decimais, mas você não precisa se preocupar com erros de precisão de arredondamento ou ponto flutuante.
Casos de teste
a, b -> Saída 7, 6 -> 25.961481565148972 10, 10 -> 40 23, 1 -> 34.99131878607909 2, 4 -> 11.657371451581236 345, 192 -> 1051.7606599443843
Você pode ver os resultados corretos para mais casos de teste usando este programa . Isso é código-golfe , portanto, os envios válidos mais curtos que seguem as regras padrão vencem.
* Existem muitos outros meios, mas para os propósitos deste desafio, usaremos os mencionados na seção "Definições".
fonte
Respostas:
Haskell , 48 bytes
Experimente online!
Isso usa o fato de que as médias quadradas, aritméticas, harmônicas e geométricas são todos casos especiais da média generalizada
((a**p+b**p)/2)**(1/p)
parap=2,1,-1,0
. A média geométrica usa o limitep->0+
, aproximado comop=1e-9
suficiente para precisão.fonte
Mathematica , 37 bytes
-2 bytes graças a Martin Ender. -6 bytes graças a Jenny_mathy e reutilização da função graças a JungHwan Min.
Experimente online!
Mathematica , 55 bytes
Experimente online!
¯ \ _ (ツ) _ / ¯
fonte
((#^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&
. Apenas para facilitar a reutilização da função (sem precisar executarClear@t
antes de cada iteração).Python 3 , 57 bytes
Experimente online!
fonte
<<1
truncará incorretamente para um número inteiro quandoa
eb
são paridades opostas.>>1
./2
lado de fora que isso é compensador. Bom truque.R , 52 bytes
Experimente online!
fonte
Haskell , 48 bytes
Experimente online!
Explicação:
s/2 = (a+b)/2
: A média aritmética.sqrt(s^2/2-p) = sqrt((a^2+2*a*b+b^2)/2-a*b) = sqrt((a^2+b^2)/2)
: O quadrado médio da raiz.sqrt p = sqrt(a*b)
. A média geométrica.2*p/s = 2*a*b/(a+b)
. A média harmônica.fonte
Oitava ,
444241 bytesExperimente online!
Observe que o TIO não possui o pacote de sinais instalado, então eu defini
rms()
no cabeçalho. No Octave Online , você pode tentar se quiserpkg load nan
. Não tenho certeza se existem intérpretes online que o carregam por padrão, mas a maioria dos sistemas teria esse pacote carregado por padrão.Agradecemos a Tom Carpenter por detectar um pequeno erro de 2 bytes.
Isso define uma função anônima, recebendo a entrada como um vetor
n=[a,b]
. Em seguida, usamos a atribuição em linha para reduzir o cálculo do HM para apenasz/q
.fonte
f=
o código, o que significa 42 bytes. (o que, obviamente, leva ao "riscado 44 parece 44") - Experimente on-line!^.5
salva um byte maissqrt
. Além disso, removaf=
da parte do código no linkGelatina , 17 bytes
Experimente online!
fonte
PḤ÷S,µ³²Æm,P½,µÆmFS
(19 bytes) - embora valha a pena mencionar, talvez seja uma fonte de inspiração. EDIT: > _> Agora percebo que posso apenas usar em+
vez de,
½
juntos e salvou um byte.PḤ÷S
pode ser substituída por:İSHİ
05AB1E ,
1816 bytes-2 bytes graças a Erik the Outgolfer
Explicação:
Experimente online!
fonte
nO;t¹O;¹Pt2¹zO/O
[a, b]
.Casca , 19 bytes
Experimente online!
-1 graças a H.PWiz .
fonte
ö√½Σm□
pode ser #ȯ√½ṁ□
MATL ,
211817 bytesExperimente online!
-3 bytes graças a Luis Mendo.
Explicação
fonte
Ohm v2 , 16 bytes
Experimente online!
Explicação
... se Ohm tivesse uma espécie de modo detalhado. : P
fonte
TI-Basic (TI-84 Plus CE),
2725 bytes-2 bytes de Scrooble
Pega uma lista de dois números
Ans
e retorna implicitamente a soma dos quatro meios; por exemplo, corra com{7,6}:prgmNAME
para obter25.96148157
.Explicação:
√(sum(Ans2)/2)
: 8 bytes: quadrado médio da raizmean(Ans)
:53 bytes: média aritmética (antigasum(Ans)/2
:)2prod(Ans)/sum(Ans)
: 8 bytes: média harmônica√(prod(Ans
: 3 bytes: média geométrica+3 bytes para 3
+
esfonte
sum(Ans)/2)
.mean(
builtin.SOGL V0.12 , 22 bytes
Experimente aqui!
fonte
Dyalog APL , 44 bytes
Experimente online!
Dyadic dfns com
a
à esquerda eb
à direita.fonte
JavaScript, 47 bytes
bastante trivial
Mostrar snippet de código
fonte
Java 8, 63 bytes
Toma ambos os parâmetros como
Double
e gera comoDouble
.Experimente aqui.
Ou (também 63 bytes ):
Toma ambos os parâmetros como
Integer
e gera comoDouble
.Experimente aqui.
fonte
Python 2 , 58 bytes
Experimente online!
Recebe entrada como flutuadores
fonte
ARBLE ,
4945 bytes-4 bytes graças ao Sr. Xcoder
Experimente online!
fonte
Na verdade , 15 bytes
Experimente online!
O Yay realmente tem um built-in para o Root Square Mean!
fonte
Julia ,
4947 bytesExperimente online!
fonte
Groovy, 54 bytes
-2 graças ao Sr. Xcoder por uma edição que me fez sentir burra.
fonte
a**2
pora*a
eb**2
comb*b
C # (.NET Core) , 76 bytes
+13 bytes para
using System;
Experimente online!
fonte
using System;
e remover os doisSystem.
. PS: Se você quiser uma forma menos chata (com exatamente o mesmo byte de contagem de 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 bytes
Expandido
Experimente online!
fonte