A energia de ligação gravitacional de um planeta é a quantidade de energia necessária para separar cada pedacinho dele, de modo que nenhum pedaço orbite ou colide com outro pedaço. Para uma esfera uniforme, a Wikipedia fornece esta fórmula:
Onde G é a constante gravitacional (6.672e-11 m 3 • kg -1 • s -2 ), M é massa e R é o raio.
Eu poderia fazer esse desafio de apenas calcular isso em Joules (kg • m 2 • s -2 ), mas ... isso seria chato . Além disso, nem todo mundo entende Joules.
Então, em vez disso, vamos convertê-lo nas seguintes unidades:
- Kilotons de TNT (4,184 trilhões de Joules, taquigrafia
kilotons
) - Armas nucleares de Hiroshima (62,76 trilhões de Joules, taquigrafia
nukes
) - Hostess ™ Twinkies (560.000 Joules, taquigrafia
twinkies
) - Quilowatt-hora (exatamente 3,6 milhões de Joules, taquigrafia
kWh
) - Quilogramas de energia em massa (1 kg de energia em massa = 299.792.458 2 Joules, taquigrafia
kg
)
Portanto, pegue a seguinte entrada:
- massa em quilogramas
- raio em metros
- uma das seis entradas distintas que representam a unidade a ser usada
E produza a energia de ligação nas unidades especificadas. Anexe a unidade abreviada ao final da saída.
Regras
- A abreviação de Joules é
J
. - O espaço em branco arbitrário é permitido, desde que não divida a unidade abreviada ou o número.
- Notação científica é permitida, em qualquer formato que seu idioma use.
- Você só precisa de 4 números significativos. Pontos flutuantes são altamente recomendados.
- Blá, blá, resposta mais curta em bytes.
Casos de teste
Gerado com esta planilha .
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 por Powering the Death Star with Twinkies de Scott Manley.
Respostas:
05AB1E ,
5654 bytesAceita entrada como
unit, radius, mass
Experimente online!
Economizou 2 bytes graças a Erik, o exportador (codificação base 255
4184
e6276
).fonte
JavaScript (ES6), 78 bytes
Aceita entrada como 3 variáveis distintas
(mass, radius, unit)
.Casos de teste
O snippet a seguir executa todos os casos de teste na planilha fornecida.
Mostrar snippet de código
Quão?
Isso é bastante semelhante à resposta C do @ ColeraSu , com uma função hash compatível com JS que funciona em toda a cadeia de unidades.
fonte
Geléia , 78 bytes
Experimente online!
Coisas para fazer com cordas não são realmente o tipo de desafio de Jelly ...
-7 bytes graças a user202729 (obrigado por me ajudar a não ser derrotado pelo JavaScript: D)
fonte
C, 113 bytes
Hash do segundo caractere, usando o final
'\0'
de"J"
. Matriz embutida em C é usada.Observe que precisamos multiplicar o segundo por
M
último, ou ele passará parainf
.Experimente online!
fonte
APL (Dyalog Unicode) ,
153 7169 bytesExperimente online!
Agradeço a @ Adám por ter esmagado absolutamente minha antiga resposta a essa. Obrigado a @ngn por 2 bytes.
Essa 'função' é na verdade um operador chamado
op
. Todos os valores para as unidades de medida foram transformados em notação científica.Como funciona:
fonte
Python 3,
112106108101 BytesBem direto. Usa a
e
notação do Python . Usa um ditado que distingue a unidade com base na segunda letra e divide pelo valor de corrosponding.u[1:2]
é basicamenteu[1]
, espera que ele retorne''
vez de um erro (que eu aprendi apenas agora). Em seguida, aplica a fórmula com algumas simplificações.editar: até 106 graças a totalmente humano, de volta a 108 por causa do novo valor das armas nucleares e até 101 graças a Colera Su.
Experimente online!
fonte
Excel (Office 365),
10610197 bytesSupondo que célula
A1
é a massa,A2
é o raio eB1
é a unidade, escrita como uma abreviação para a saída.Excel, 130 bytes
O Excel antiquado não tem a
SWITCH
função, então você temfonte
299792E3^2
por89876E12
(Ainda preciso o suficiente para os requisitos das perguntas). Divida todos os valores1000
salvando outros 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()
função está disponível para cópias da área de trabalho do Excel e foi introduzida no Office 2016.Ruby,
8382 bytesUsa um hash personalizado para indexar uma LUT para as unidades (
i * k mod m
fórmula). Os números foram encontrados usando força bruta.fonte
Excel, 94 bytes
Toma Massa de
A1
, Raio deB1
, Unidade emC1
. Olhe para cima2*Code(Unit) + Length(Unit) modulo 11
.fonte
Geléia , 59 bytes
Eu só queria tentar outro método estranho para converter as unidades. Mas o resto do código provavelmente é mal jogado.
Experimente online!
Quão?
Construímos uma 'assinatura' de uma cadeia de unidades a partir da primalidade de seus códigos ASCII. Nós o interpretamos como um valor binário e aplicamos um módulo para obter o índice final na tabela de pesquisa.
O link auxiliar fornece os seguintes índices para cada unidade:
fonte