Энергия гравитационного связывания планеты - это количество энергии, необходимое для отделения каждого крошечного куска, чтобы ни один кусок не вращался вокруг орбиты или не сталкивался с другим. Для однородной сферы Википедия дает следующую формулу:
Где G - гравитационная постоянная (6,672e-11 м 3 • кг -1 • с -2 ), M - масса, а R - радиус.
Я мог бы решить эту проблему, просто рассчитав это в джоулях (кг • м 2 • с -2 ), но… это было бы скучно . И кроме того, не все понимают джоуль.
Итак, вместо этого давайте преобразуем его в следующие единицы:
- Килотоны ТНТ (4,184 трлн Джо, сокращение
kilotons
) - Ядерное оружие Хиросимы (62,76 триллиона джоулей, сокращение
nukes
) - Hostess ™ Twinkies (560 000 джоулей, сокращение
twinkies
) - Киловатт-часы (ровно 3,6 миллиона джоулей, сокращение
kWh
) - Килограммы массы-энергии (1 кг массы-энергии = 299 792 458 2 Дж, сокращение
kg
)
Итак, примите следующие данные:
- масса в килограммах
- радиус в метрах
- один из шести отдельных входов, представляющих единицу для использования
И вывод энергии связи в указанных единицах. Добавьте сокращенную единицу к концу вывода.
правила
- Сокращение для Джоуля есть
J
. - Допускается произвольный пробел, если он не разделяет сокращенную единицу или число.
- Разрешена научная запись в любом формате, который использует ваш язык.
- Вам нужно только 4 значимых цифры. С плавающей точкой настоятельно рекомендуется.
- Бла бла кратчайший ответ в байтах.
Тестовые случаи
Сгенерировано с помощью этой таблицы .
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
Вдохновленный «Сила Скотта Мэнли» с помощью « Звезды Смерти с помощью Твинки ».
Ответы:
05AB1E ,
5654 байтаПринимает вход как
unit, radius, mass
Попробуйте онлайн!
Сохраненные 2 байта благодаря Эрику outgolfer (база 255 закодировать
4184
и6276
).источник
JavaScript (ES6), 78 байт
Принимает ввод как 3 различных переменных
(mass, radius, unit)
.Контрольные примеры
Следующий фрагмент кода запускает все тестовые случаи в предоставленной электронной таблице.
Показать фрагмент кода
Как?
Это очень похоже на C-ответ @ ColeraSu с JS-дружественной хэш-функцией, которая работает со всей строкой модуля.
источник
Желе , 78 байт
Попробуйте онлайн!
Вещи, связанные со струнами, на самом деле не являются проблемой Желе ...
-7 байт благодаря user202729 (спасибо, что помог мне не быть побежденным JavaScript: D)
источник
C 113 байтов
Hash второго символа, используя завершающую
'\0'
из"J"
. Встроенный массив в C используется.Обратите внимание, что нам нужно умножить второй
M
последний, или он будет переполненinf
.Попробуйте онлайн!
источник
APL (Dyalog Unicode) ,
153 7169 байтПопробуйте онлайн!
Спасибо @ Adám за то, что я полностью вбил мой старый ответ в этот. Спасибо @ngn за 2 байта.
Эта «функция» на самом деле называется оператором
op
. Все значения для единиц измерения были преобразованы в научные обозначения.Как это устроено:
источник
Python 3,
112106108101 байтДовольно прямо вперед. Использует
e
нотацию Python . Использует dict, который различает единицы на основе второй буквы и делит на соответствующее значение.u[1:2]
в основномu[1]
, ожидайте, что он возвращает''
вместо ошибки (о которой я узнал только сейчас). Затем применяется формула с несколькими упрощениями.редактирование: до 106 благодаря полностью человеческому, до 108 из-за нового значения нюков и до 101 благодаря Colera Su.
Попробуйте онлайн!
источник
Excel (Office 365),
10610197 байтПредполагая, что ячейка
A1
является массой,A2
является радиусом иB1
является единицей, записанной как сокращение для вывода.Excel, 130 байт
Старомодный Excel не имеет этой
SWITCH
функции, поэтому у вас естьисточник
299792E3^2
с89876E12
Разделить все значения по формуле (Тем не менее достаточно точным для требований вопроса.)1000
Сохраняет еще 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()
функция доступна для настольных копий Excel и была представлена в Office 2016.Рубин,
8382 байтаИспользует пользовательский хеш для индексации LUT для единиц (
i * k mod m
формула). Числа были найдены с использованием грубой силы.источник
Excel, 94 байта
Принимает массу от
A1
, Радиус отB1
, Единица вC1
. Посмотрите на2*Code(Unit) + Length(Unit) modulo 11
.источник
Желе , 59 байт
Я просто хотел попробовать другой странный метод для преобразования единиц. Но остальная часть кода, вероятно, плохо играется в гольф.
Попробуйте онлайн!
Как?
Мы строим «сигнатуру» единичной строки из первичности ее кодов ASCII. Мы интерпретируем его как двоичное значение и применяем по модулю, чтобы получить окончательный индекс в таблице поиска.
Вспомогательная ссылка дает следующие индексы для каждого блока:
источник