Die Schwerkraftbindungsenergie eines Planeten ist die Energiemenge, die erforderlich ist, um jedes winzige Stück davon zu trennen, damit kein Stück umkreist oder mit einem anderen Stück kollidiert. Für eine einheitliche Sphäre gibt Wikipedia folgende Formel an:
Dabei ist G die Gravitationskonstante (6.672e-11 m 3 · kg -1 · s -2 ), M die Masse und R der Radius.
Ich könnte diese Herausforderung darin bestehen , dies nur in Joule (kg • m 2 • s –2 ) zu berechnen , aber… das wäre langweilig . Und außerdem versteht nicht jeder Joules.
Lassen Sie es uns stattdessen in die folgenden Einheiten konvertieren:
- Kilotonnen TNT (4,184 Billionen Joule, Kurzform
kilotons
) - Hiroshima-Atomwaffen (62,76 Billionen Joule, Kurzschrift
nukes
) - Hostess ™ Twinkies (560.000 Joule, Kurzschrift
twinkies
) - Kilowattstunden (genau 3,6 Millionen Joule, Kurzform
kWh
) - Kilogramm Masse-Energie (1 kg Masse-Energie = 299.792.458 2 Joule, Kurzschrift
kg
)
Geben Sie also Folgendes ein:
- Masse in Kilogramm
- Radius in Metern
- Einer von sechs verschiedenen Eingängen, die die zu verwendende Einheit darstellen
Und die Bindungsenergie in den angegebenen Einheiten ausgeben. Hängen Sie die Kurzschrift an das Ende der Ausgabe an.
Regeln
- Die Abkürzung für Joules ist
J
. - Beliebige Leerzeichen sind zulässig, solange sie weder die Kurzschrift noch die Zahl aufteilen.
- Wissenschaftliche Notation ist zulässig, in welchem Format auch immer Ihre Sprache verwendet wird.
- Sie benötigen nur 4 signifikante Zahlen. Fließkommazahlen werden dringend empfohlen.
- Blah blah kürzeste Antwort in Bytes.
Testfälle
Mit dieser Tabelle generiert .
Mass (kg) Radius (m) J kilotons nukes twinkies kWh kg
3.302E+23 2440000 1.789E+30 4.275E+17 2.850E+16 3.194E+24 4.969E+23 1.990E+13
4.869E+24 6052000 1.568E+32 3.748E+19 2.499E+18 2.800E+26 4.356E+25 1.745E+15
5.974E+24 6371000 2.242E+32 5.360E+19 3.573E+18 4.004E+26 6.229E+25 2.495E+15
6.419E+23 3390000 4.866E+30 1.163E+18 7.753E+16 8.689E+24 1.352E+24 5.414E+13
1.899E+27 69911000 2.065E+36 4.935E+23 3.290E+22 3.687E+30 5.736E+29 2.298E+19
5.685E+26 58232000 2.222E+35 5.310E+22 3.540E+21 3.968E+29 6.172E+28 2.472E+18
8.683E+25 25360000 1.190E+34 2.845E+21 1.896E+20 2.125E+28 3.306E+27 1.324E+17
1.024E+26 24620000 1.705E+34 4.075E+21 2.717E+20 3.045E+28 4.736E+27 1.897E+17
1.311E+22 1186000 5.801E+27 1.387E+15 9.244E+13 1.036E+22 1.611E+21 6.455E+10
1.989E+30 696300000 2.274E+41 5.436E+28 3.624E+27 4.062E+35 6.318E+34 2.531E+24
7.350E+22 1737000 1.245E+29 2.976E+16 1.984E+15 2.223E+23 3.458E+22 1.385E+12
Inspiriert von Powering the Death Star mit Twinkies von Scott Manley.
Antworten:
05AB1E ,
5654 BytesÜbernimmt die Eingabe als
unit, radius, mass
Probieren Sie es online!
2 Bytes gespart dank Erik dem Outgolfer (Base 255 encode
4184
und6276
).quelle
JavaScript (ES6), 78 Byte
Nimmt die Eingabe als 3 verschiedene Variablen an
(mass, radius, unit)
.Testfälle
Das folgende Snippet führt alle Testfälle in der bereitgestellten Tabelle aus.
Code-Snippet anzeigen
Wie?
Dies ist ziemlich ähnlich zu @ ColeraSus C-Antwort , mit einer JS-freundlichen Hash-Funktion, die für die gesamte Unit-Zeichenfolge funktioniert.
quelle
Jelly , 78 Bytes
Probieren Sie es online!
Sachen, die mit Streichern zu tun haben, sind nicht wirklich Jellys Herausforderung ...
-7 Bytes dank user202729 (danke, dass du mir geholfen hast, nicht von JavaScript geschlagen zu werden: D)
quelle
C 113 Bytes
Hash das zweite Zeichen unter Verwendung des Trailing
'\0'
von"J"
. Inline-Array in C wird verwendet.Beachten Sie, dass wir den vorletzten multiplizieren müssen, sonst
M
läuft er überinf
.Probieren Sie es online!
quelle
APL (Dyalog Unicode) ,
153 7169 BytesProbieren Sie es online!
Vielen Dank an @ Adám, der meine alte Antwort in diese zerquetscht hat. Danke an @ngn für 2 Bytes.
Diese 'Funktion' ist tatsächlich ein Operator, der aufgerufen wird
op
. Alle Werte für die Maßeinheiten wurden in wissenschaftliche Notation umgewandelt.Wie es funktioniert:
quelle
Python 3,
112106108101 BytesZiemlich einfach. Verwendet die Python-
e
Notation. Verwendet ein Diktat, das die Einheit anhand des zweiten Buchstabens unterscheidet und durch den entsprechenden Wert dividiert.u[1:2]
Grundsätzlichu[1]
ist zu erwarten, dass es''
anstelle eines Fehlers zurückkehrt (was ich erst jetzt gelernt habe). Dann gilt die Formel mit ein paar Vereinfachungen.edit: dank totalhuman runter auf 106, dank new nukes value zurück auf 108 und dank colera su runter auf 101.
Probieren Sie es online!
quelle
Excel (Office 365),
10610197 ByteAngenommen, die Zelle
A1
ist die Masse,A2
der Radius undB1
die Einheit, die als Kurzform für die Ausgabe geschrieben wird.Excel, 130 Bytes
Altmodisches Excel hat nicht die
SWITCH
Funktion, also haben Siequelle
299792E3^2
durch89876E12
(Für Fragen immer noch genau genug) ersetzen . Teilen Sie alle Werte durch1000
weitere 2:=40032E-19*A1^2/(A2*SWITCH(MID(B1,2,1),"u",6276E6,"w",56,"W",360,"g",89876E8,"i",4184E5,1E-4))&B1
Switch()
Funktion für Desktop-Kopien von Excel verfügbar ist und mit Office 2016 eingeführt wurde.Ruby,
8382 BytesVerwendet einen benutzerdefinierten Hash, um eine LUT für die Einheiten (
i * k mod m
Formel) zu indizieren . Die Zahlen wurden mit Brute-Force ermittelt.quelle
Excel, 94 Bytes
Nimmt Masse von
A1
, Radius vonB1
, Einheit inC1
. Schau auf2*Code(Unit) + Length(Unit) modulo 11
.quelle
Jelly , 59 Bytes
Ich wollte nur eine andere seltsame Methode ausprobieren, um die Einheiten umzurechnen. Aber der Rest des Codes ist wahrscheinlich schlecht golfen.
Probieren Sie es online!
Wie?
Wir bauen eine 'Signatur' einer Einheitszeichenfolge aus der Primalität ihrer ASCII-Codes auf. Wir interpretieren es als binären Wert und wenden ein Modulo an, um den endgültigen Index in der Nachschlagetabelle zu erhalten.
Der Hilfslink gibt die folgenden Indizes für jede Einheit an:
quelle