Hay bastantes medios en matemáticas, como la media aritmética, la media geométrica y muchos otros ...
Definiciones y Tarea
Tenga en cuenta que estas son las definiciones para dos enteros positivos *:
La raíz cuadrada media es la raíz cuadrada de la suma de sus cuadrados divididos por la mitad ( ).
La media aritmética es su suma, reducida a la mitad ( ).
La media geométrica es la raíz cuadrada de su producto ( ).
La media armónica es 2 dividida por la suma de sus inversos ( = ).
Dados dos enteros a y b tales que a, b ∈ [1, + ∞) , suma las medias mencionadas anteriormente de a y b . Sus respuestas deben tener una precisión de al menos 3 decimales, pero no tiene que preocuparse por los errores de precisión de redondeo o coma flotante.
Casos de prueba
a, b -> Salida 7, 6 -> 25.961481565148972 10, 10 -> 40 23, 1 -> 34.99131878607909 2, 4 -> 11.657371451581236 345, 192 -> 1051.7606599443843
Puede ver los resultados correctos para más casos de prueba usando este programa . Este es el código de golf , por lo que gana las presentaciones válidas más cortas que siguen las reglas estándar.
* Hay muchos otros medios, pero para los propósitos de este desafío usaremos los mencionados en la sección "Definiciones".
fuente
Respuestas:
Haskell , 48 bytes
Pruébalo en línea!
Esto utiliza el hecho de que los medios raíz cuadrada, aritmética, armónica y geométrica son todos casos especiales de la media generalizada
((a**p+b**p)/2)**(1/p)
parap=2,1,-1,0
. La media geométrica usa el límitep->0+
, aproximado como elp=1e-9
que es suficiente para la precisión.fuente
Mathematica , 37 bytes
-2 bytes gracias a Martin Ender. -6 bytes gracias a Jenny_mathy y la reutilización de funciones gracias a JungHwan Min.
Pruébalo en línea!
Mathematica , 55 bytes
Pruébalo en línea!
¯ \ _ (ツ) _ / ¯
fuente
((#^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&
. Solo para que sea más fácil reutilizar la función (sin tener que ejecutarlaClear@t
antes de cada iteración).Python 3 , 57 bytes
Pruébalo en línea!
fuente
<<1
va a truncarse incorrectamente a un entero cuandoa
yb
son paridades opuestas.>>1
./2
exterior que esto compensa. Buen truco.R , 52 bytes
Pruébalo en línea!
fuente
Haskell , 48 bytes
Pruébalo en línea!
Explicación:
s/2 = (a+b)/2
: La media aritmética.sqrt(s^2/2-p) = sqrt((a^2+2*a*b+b^2)/2-a*b) = sqrt((a^2+b^2)/2)
: El cuadrado medio raíz.sqrt p = sqrt(a*b)
. La media geométrica.2*p/s = 2*a*b/(a+b)
. La media armónica.fuente
Octava ,
444241 bytesPruébalo en línea!
Tenga en cuenta que TIO no tiene instalado el paquete de señal, así que lo definí
rms()
en el encabezado. En Octave Online , puedes probarlo si lo hacespkg load nan
. No estoy seguro de si hay algún intérprete en línea que lo cargue de forma predeterminada, pero la mayoría de los sistemas tendrían este paquete cargado de forma predeterminada.Gracias a Tom Carpenter por detectar un pequeño error de 2 bytes.
Esto define una función anónima, tomando la entrada como un vector
n=[a,b]
. Luego usamos la asignación en línea para reducir el cálculo de la HM a soloz/q
.fuente
f=
en el código, por lo que tiene 42 bytes. (lo que, por supuesto, lleva al "44 tachado parece 44") - ¡ Pruébelo en línea!^.5
guarda un byte encimasqrt
. Además, eliminef=
de la parte del código en el enlaceJalea , 17 bytes
Pruébalo en línea!
fuente
PḤ÷S,µ³²Æm,P½,µÆmFS
(19 bytes): aunque vale la pena mencionarlo, tal vez sea una fuente de inspiración. EDITAR: > _> Ahora me doy cuenta de que puedo usar en+
lugar de,
½
, y guardó un byte.PḤ÷S
puede ser reemplazado por:İSHİ
05AB1E ,
1816 bytes-2 bytes gracias a Erik the Outgolfer
Explicación:
Pruébalo en línea!
fuente
nO;t¹O;¹Pt2¹zO/O
[a, b]
.Casco , 19 bytes
Pruébalo en línea!
-1 gracias a H.PWiz .
fuente
ö√½Σm□
puede serȯ√½ṁ□
MATL ,
211817 bytesPruébalo en línea!
-3 bytes gracias a Luis Mendo.
Explicación
fuente
Ohm v2 , 16 bytes
Pruébalo en línea!
Explicación
... si Ohm tuviera una especie de modo detallado. :PAG
fuente
TI-Basic (TI-84 Plus CE),
2725 bytes-2 bytes de Scrooble
Toma una lista de dos números
Ans
e implícitamente devuelve la suma de los cuatro medios; por ejemplo, correr con{7,6}:prgmNAME
get25.96148157
.Explicación:
√(sum(Ans2)/2)
: 8 bytes: raíz cuadrada mediamean(Ans)
:53 bytes: media aritmética (edad:sum(Ans)/2
)2prod(Ans)/sum(Ans)
: 8 bytes: media armónica√(prod(Ans
: 3 bytes: media geométrica+3 bytes por 3
+
esfuente
sum(Ans)/2)
.mean(
incorporado.SOGL V0.12 , 22 bytes
Pruébalo aquí!
fuente
Dyalog APL , 44 bytes
Pruébalo en línea!
Dyadic dfns con
a
a la izquierda yb
a la derecha.fuente
JavaScript, 47 bytes
bastante trivial
Mostrar fragmento de código
fuente
Java 8, 63 bytes
Toma ambos parámetros como
Double
y emite comoDouble
.Pruébalo aquí.
O (también 63 bytes ):
Toma ambos parámetros como
Integer
y emite comoDouble
.Pruébalo aquí.
fuente
Python 2 , 58 bytes
Pruébalo en línea!
Toma entrada como flotadores
fuente
ARBLE ,
4945 bytes-4 bytes gracias al Sr. Xcoder
Pruébalo en línea!
fuente
En realidad , 15 bytes
Pruébalo en línea!
¡Yay en realidad tiene incorporado Root Square Mean!
fuente
Julia ,
4947 bytesPruébalo en línea!
fuente
Groovy, 54 bytes
-2 gracias al Sr. Xcoder por una edición que me hizo sentir tonto.
fuente
a**2
cona*a
yb**2
conb*b
C # (.NET Core) , 76 bytes
+13 bytes para
using System;
Pruébalo en línea!
fuente
using System;
quitando ambosSystem.
. PD: Si quieres una manera menos aburrida (con exactamente el mismo byte recuento 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
Pruébalo en línea!
fuente