L' énergie de liaison gravitationnelle d'une planète est la quantité d'énergie requise pour en séparer chaque petit morceau afin qu'aucune pièce n'orbite ou n'entre en collision avec une autre pièce. Pour une sphère uniforme, Wikipedia donne cette formule:
Où G est la constante gravitationnelle (6,672e-11 m 3 • kg -1 • s -2 ), M est la masse et R est le rayon.
Je pourrais faire ce défi de simplement calculer cela en Joules (kg • m 2 • s -2 ), mais… ce serait ennuyeux . Et d'ailleurs, tout le monde ne comprend pas les Joules.
Au lieu de cela, convertissons-le dans les unités suivantes:
- Kilotonnes de TNT (4.184 trillions de joules, sténographie
kilotons
) - Armes nucléaires d'Hiroshima (62,76 trillions de joules, sténographie
nukes
) - Hostess ™ Twinkies (560 000 Joules, sténographie
twinkies
) - Kilowatt-heures (exactement 3,6 millions de Joules, sténographie
kWh
) - Kilogrammes d'énergie de masse (1 kg d'énergie de masse = 299 792 458 2 joules, sténographie
kg
)
Prenez donc l'entrée suivante:
- masse en kilogrammes
- rayon en mètres
- l'une des six entrées distinctes représentant l'unité à utiliser
Et produire l'énergie de liaison dans les unités spécifiées. Ajoutez l'unité sténographique à la fin de la sortie.
Règles
- Le raccourci pour Joules est
J
. - Les espaces blancs arbitraires sont autorisés, tant qu'ils ne divisent pas l'unité sténographique ou le nombre.
- La notation scientifique est autorisée, quel que soit le format utilisé par votre langue.
- Vous n'avez besoin que de 4 chiffres significatifs. Les points flottants sont fortement recommandés.
- Blah blah réponse la plus courte en octets.
Cas de test
Généré avec cette feuille de calcul .
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
Inspiré par Powering the Death Star with Twinkies de Scott Manley.
Réponses:
05AB1E ,
5654 octetsPrend l'entrée comme
unit, radius, mass
Essayez-le en ligne!
Enregistré 2 octets grâce à Erik le joueur de golf (base 255 encoder
4184
et6276
).la source
JavaScript (ES6), 78 octets
Prend l'entrée comme 3 variables distinctes
(mass, radius, unit)
.Cas de test
L'extrait suivant exécute tous les cas de test dans la feuille de calcul fournie.
Afficher l'extrait de code
Comment?
Ceci est assez similaire à la réponse C de @ ColeraSu , avec une fonction de hachage compatible JS qui fonctionne sur toute la chaîne d'unité.
la source
Gelée , 78 octets
Essayez-le en ligne!
Les trucs à faire avec les cordes ne sont pas vraiment le genre de défi de Jelly ...
-7 octets grâce à user202729 (merci de m'avoir aidé à ne pas me faire battre par JavaScript: D)
la source
C, 113 octets
Hachez le deuxième caractère en utilisant la fin
'\0'
de"J"
. Le tableau en ligne en C est utilisé.Notez que nous devons multiplier l'avant-
M
dernier, sinon il déborderainf
.Essayez-le en ligne!
la source
APL (Dyalog Unicode) ,
153 7169 octetsEssayez-le en ligne!
Merci à @ Adám d'avoir écrasé mon ancienne réponse dans celle-ci. Merci à @ngn pour 2 octets.
Cette «fonction» est en fait un opérateur appelé
op
. Toutes les valeurs des unités de mesure ont été transformées en notation scientifique.Comment ça fonctionne:
la source
Python 3,
112106108 108101 octetsAssez simple. Utilise la
e
notation de Python . Utilise un dict qui distingue l'unité en fonction de la deuxième lettre et divise par la valeur corrosive.u[1:2]
est fondamentalementu[1]
, attendez-vous à ce qu'il retourne''
au lieu d'une erreur (que je viens d'apprendre maintenant). Applique ensuite la formule avec quelques simplifications.edit: jusqu'à 106 grâce à totalementhuman, de retour à 108 à cause de la nouvelle valeur des armes nucléaires et à 101 grâce à Colera Su.
Essayez-le en ligne!
la source
Excel (Office 365),
10610197 octetsEn supposant que la cellule
A1
est la masse,A2
le rayon etB1
l'unité, écrite comme raccourci pour la sortie.Excel, 130 octets
Excel à l'ancienne n'a pas la
SWITCH
fonction, vous avez doncla source
299792E3^2
par89876E12
(Toujours suffisamment précis pour les exigences de la question.) Divisez toutes les valeurs par1000
enregistre un autre 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()
fonction est disponible pour les copies de bureau d'Excel et a été introduite avec Office 2016.Rubis,
8382 octetsUtilise un hachage personnalisé pour indexer une LUT pour les unités (
i * k mod m
formule). Les nombres ont été trouvés en utilisant la force brute.la source
Excel, 94 octets
Prend la masse de
A1
, le rayon deB1
, l'unité enC1
. Regardez2*Code(Unit) + Length(Unit) modulo 11
.la source
Gelée , 59 octets
Je voulais juste essayer une autre méthode bizarre pour convertir les unités. Mais le reste du code est probablement mal joué.
Essayez-le en ligne!
Comment?
Nous construisons une «signature» d'une chaîne d'unité à partir de la primauté de ses codes ASCII. Nous l'interprétons comme une valeur binaire et appliquons un modulo pour obtenir l'index final dans la table de recherche.
Le lien d'aide donne les indices suivants pour chaque unité:
la source