La energía de unión gravitacional de un planeta es la cantidad de energía requerida para separar cada pequeño trozo de este, de modo que ningún trozo orbite o choque con otro trozo. Para una esfera uniforme, Wikipedia da esta fórmula:
Donde G es la constante gravitacional (6.672e-11 m 3 • kg -1 • s -2 ), M es masa y R es el radio.
Yo podría hacer que este desafío sobre el cálculo de este meramente en Julios (kg • m 2 • s -2 ), pero ... que sería aburrido . Y además, no todos entienden a Joules.
Entonces, en cambio, convirtámoslo en las siguientes unidades:
- Kilotones de TNT (4.184 billones de julios, taquigrafía
kilotons
) - Armas nucleares de Hiroshima (62,76 billones de julios, taquigrafía
nukes
) - Hostess ™ Twinkies (560,000 julios, taquigrafía
twinkies
) - Kilovatios-hora (exactamente 3,6 millones de julios, taquigrafía
kWh
) - Kilogramos de energía de masa (1 kg de energía de masa = 299,792,458 2 julios, taquigrafía
kg
)
Entonces, tome la siguiente entrada:
- masa en kilogramos
- radio en metros
- Una de las seis entradas distintas que representan la unidad a utilizar
Y genera la energía de enlace en las unidades especificadas. Agregue la unidad de taquigrafía al final de la salida.
Reglas
- La abreviatura de Joules es
J
. - Se permite un espacio en blanco arbitrario, siempre que no divida la unidad de taquigrafía o el número.
- Se permite la notación científica, en cualquier formato que utilice su idioma.
- Solo necesitas 4 cifras significativas. Los puntos flotantes son muy recomendables.
- Bla, bla, la respuesta más corta en bytes.
Casos de prueba
Generado con esta hoja de cálculo .
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
Inspirado en Powering the Death Star with Twinkies de Scott Manley.
Respuestas:
05AB1E ,
5654 bytesToma entrada como
unit, radius, mass
Pruébalo en línea!
Ahorró 2 bytes gracias a Erik el outgolfer (codificación base 255
4184
y6276
).fuente
JavaScript (ES6), 78 bytes
Toma la entrada como 3 variables distintas
(mass, radius, unit)
.Casos de prueba
El siguiente fragmento ejecuta todos los casos de prueba en la hoja de cálculo proporcionada.
Mostrar fragmento de código
¿Cómo?
Esto es bastante similar a la respuesta C de @ ColeraSu , con una función hash compatible con JS que funciona en toda la cadena de la unidad.
fuente
Gelatina , 78 bytes
Pruébalo en línea!
Las cosas relacionadas con las cuerdas no son realmente el tipo de desafío de Jelly ...
-7 bytes gracias a user202729 (gracias por ayudarme a no ser golpeado por JavaScript: D)
fuente
C, 113 bytes
Hash el segundo personaje, usando el seguimiento
'\0'
de"J"
. Se utiliza una matriz en línea en C.Tenga en cuenta que debemos multiplicar el
M
penúltimo, o se desbordaráinf
.Pruébalo en línea!
fuente
APL (Dyalog Unicode) ,
153 7169 bytesPruébalo en línea!
Gracias a @ Adám por aplastar absolutamente mi vieja respuesta en esta. Gracias a @ngn por 2 bytes.
Esta 'función' es en realidad un operador llamado
op
. Todos los valores para las unidades de medida se transformaron en notación científica.Cómo funciona:
fuente
Python 3,
112106108101 BytesMuy claro. Utiliza la
e
notación de Python . Utiliza un dict que distingue la unidad basada en la segunda letra y divide por el valor de corrosponding.u[1:2]
es básicamenteu[1]
, esperar que regrese en''
lugar de un error (que solo aprendí ahora). Luego aplica la fórmula con algunas simplificaciones.editar: hasta 106 gracias a totalmente humano, de nuevo a 108 debido al nuevo valor de las armas nucleares y hasta 101 gracias a Colera Su.
Pruébalo en línea!
fuente
Excel (Oficina 365),
10610197 bytesSuponiendo que la celda
A1
es la masa,A2
es el radio yB1
es la unidad, escrita como la abreviatura de la salida.Excel, 130 bytes
Excel antiguo no tiene la
SWITCH
función, así que tienesfuente
299792E3^2
con89876E12
(Aún lo suficientemente preciso para los requisitos de la pregunta). Divida todos los valores entre1000
otros 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()
función está disponible para copias de escritorio de Excel, y se introdujo con Office 2016.Ruby,
8382 bytesUtiliza un hash personalizado para indexar una LUT para las unidades (
i * k mod m
fórmula). Los números fueron encontrados usando la fuerza bruta.fuente
Excel, 94 bytes
Toma masa de
A1
, radio deB1
, unidad enC1
. Mira hacia arriba2*Code(Unit) + Length(Unit) modulo 11
.fuente
Jalea , 59 bytes
Solo quería probar otro método extraño para convertir las unidades. Pero el resto del código probablemente esté mal jugado.
Pruébalo en línea!
¿Cómo?
Construimos una 'firma' de una cadena de unidades a partir de la originalidad de sus códigos ASCII. Lo interpretamos como un valor binario y aplicamos un módulo para obtener el índice final en la tabla de búsqueda.
El enlace auxiliar proporciona los siguientes índices para cada unidad:
fuente