In der Mathematik gibt es eine ganze Reihe von Mitteln, wie das arithmetische Mittel, das geometrische Mittel und viele andere ...
Definitionen und Aufgabe
Beachten Sie, dass dies die Definitionen für zwei positive ganze Zahlen * sind:
Das quadratische Mittel ist die Quadratwurzel aus der Summe der halbierten Quadrate ( ).
Das arithmetische Mittel ist ihre halbierte Summe ( ).
Das geometrische Mittel ist die Quadratwurzel ihres Produkts ( ).
Das harmonische Mittel ist 2 geteilt durch die Summe ihrer Inversen ( = ).
Wenn zwei ganze Zahlen a und b so gegeben sind, dass a, b ∈ [1, + ∞) , summieren Sie die oben genannten Mittelwerte von a und b . Ihre Antworten müssen auf mindestens 3 Dezimalstellen genau sein, aber Sie müssen sich keine Gedanken über Rundungs- oder Gleitkomma-Genauigkeitsfehler machen.
Testfälle
a, b -> Ausgabe 7, 6 -> 25.961481565148972 10, 10 -> 40 23, 1 -> 34.99131878607909 2, 4 -> 11.657371451581236 345, 192 -> 1051,7606599443843
Mit diesem Programm können Sie die korrekten Ergebnisse für weitere Testfälle anzeigen . Das ist Code-Golf , also gewinnt die kürzeste gültige Einsendung, die den Standardregeln folgt.
* Es gibt viele andere Möglichkeiten, aber für die Zwecke dieser Herausforderung verwenden wir die im Abschnitt "Definitionen" genannten.
quelle
Antworten:
Haskell , 48 Bytes
Probieren Sie es online!
Hierbei wird die Tatsache ausgenutzt, dass die quadratischen, arithmetischen, harmonischen und geometrischen Mittelwerte Sonderfälle des verallgemeinerten Mittels
((a**p+b**p)/2)**(1/p)
für sindp=2,1,-1,0
. Das geometrische Mittel verwendet den Grenzwertp->0+
,p=1e-9
der für die Genauigkeit genügt.quelle
Mathematica , 37 Bytes
-2 Bytes dank Martin Ender. -6 Bytes dank Jenny_mathy und Funktionswiederverwendbarkeit dank JungHwan Min.
Probieren Sie es online!
Mathematica , 55 Bytes
Probieren Sie es online!
¯ \ _ (ツ) _ / ¯
quelle
((#^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&
. Nur um die Wiederverwendung der Funktion zu vereinfachen (ohneClear@t
vor jeder Iteration ausgeführt werden zu müssen).Python 3 , 57 Bytes
Probieren Sie es online!
quelle
<<1
wird fälschlicherweise auf eine ganze Zahl abgeschnitten, wenna
undb
sind entgegengesetzte Paritäten.>>1
./2
Äußeres gibt, das dies ausgleicht. Guter Trick.R , 52 Bytes
Probieren Sie es online!
quelle
Haskell , 48 Bytes
Probieren Sie es online!
Erläuterung:
s/2 = (a+b)/2
: Das arithmetische Mittel.sqrt(s^2/2-p) = sqrt((a^2+2*a*b+b^2)/2-a*b) = sqrt((a^2+b^2)/2)
: Das quadratische Mittel.sqrt p = sqrt(a*b)
. Das geometrische Mittel.2*p/s = 2*a*b/(a+b)
. Das harmonische Mittel.quelle
Oktave ,
444241 BytesProbieren Sie es online!
Beachten Sie, dass TIO das Signalpaket nicht installiert hat, so dass ich es
rms()
im Header definiert habe . Bei Octave Online können Sie es versuchen, wenn Siepkg load nan
. I'm not sure if there are any online interpreters that load it by default, but most systems would have this package loaded by default.Vielen Dank an Tom Carpenter, der einen kleinen Fehler von 2 Bytes entdeckt hat.
Dies definiert eine anonyme Funktion, die die Eingabe als Vektor verwendet
n=[a,b]
. Wir verwenden dann die Inline-Zuweisung, um die Berechnung des HM auf nur zu reduzierenz/q
.quelle
f=
in the code, so that makes it 42 bytes. (which of course leads to the "crossed out 44 looks like 44") - Try it online!^.5
saves a byte oversqrt
. Also, removef=
from the code part in the linkJelly, 17 bytes
Try it online!
quelle
PḤ÷S,µ³²Æm,P½,µÆmFS
(19 bytes) - I though it's worth mentioning, maybe it's a source of inspiration. EDIT: >_> I now realise I can just use+
instead of,
½
together, and it saved a byte.PḤ÷S
can be replaced by:İSHİ
05AB1E,
1816 bytes-2 bytes thanks to Erik the Outgolfer
Explanation:
Try it online!
quelle
nO;t¹O;¹Pt2¹zO/O
[a, b]
.Husk, 19 bytes
Try it online!
-1 thanks to H.PWiz.
quelle
ö√½Σm□
can beȯ√½ṁ□
MATL,
211817 bytesTry it online!
-3 bytes thanks to Luis Mendo.
Explanation
quelle
Ohm v2, 16 bytes
Try it online!
Explanation
... wenn Ohm eine Art wortreichen Modus hätte. : P
quelle
TI-Basic (TI-84 Plus CE),
27 bis25 Byte-2 Bytes von Scrooble
Nimmt eine Liste mit zwei Zahlen auf
Ans
und gibt implizit die Summe der vier Mittelwerte zurück. zB mit rennen um{7,6}:prgmNAME
zu bekommen25.96148157
.Erläuterung:
√(sum(Ans2)/2)
: 8 Bytes: quadratischer Mittelwertmean(Ans)
:53 Bytes: arithmetisches Mittel (alt:sum(Ans)/2
)2prod(Ans)/sum(Ans)
: 8 Bytes: harmonischer Mittelwert√(prod(Ans
: 3 Bytes: geometrischer Mittelwert+3 Bytes für 3
+
esquelle
sum(Ans)/2)
.mean(
eingebauten.SOGL V0.12 , 22 Bytes
Probieren Sie es hier aus!
quelle
Dyalog APL , 44 Bytes
Probieren Sie es online!
Dyadic dfns mit
a
links undb
rechts.quelle
JavaScript, 47 Bytes
ziemlich trivial
Code-Snippet anzeigen
quelle
Java 8, 63 Bytes
Übernimmt beide Parameter als
Double
und Ausgänge alsDouble
.Probieren Sie es hier aus.
Oder (auch 63 Bytes ):
Übernimmt beide Parameter als
Integer
und Ausgänge alsDouble
.Probieren Sie es hier aus.
quelle
Python 2 , 58 Bytes
Probieren Sie es online!
Übernimmt die Eingabe als Float
quelle
ARBLE ,
4945 Bytes-4 Bytes dank Mr. Xcoder
Probieren Sie es online!
quelle
Eigentlich 15 Bytes
Probieren Sie es online!
Yay hat tatsächlich ein eingebautes Root Square Mean!
quelle
Julia ,
4947 BytesProbieren Sie es online!
quelle
Groovy, 54 Bytes
-2 Danke an Mr. Xcoder für eine Bearbeitung, die mich dumm gemacht hat.
quelle
a**2
mita*a
undb**2
mit ersetzenb*b
C # (.NET Core) , 76 Byte
+13 Bytes für
using System;
Probieren Sie es online!
quelle
using System;
und beide entfernenSystem.
. PS: Wenn Sie eine weniger langweilige Art und Weise wollen (mit der exakt gleichen Byte-Zahl 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
Erweitert
Probieren Sie es online!
quelle