The energi ikat gravitasi dari planet adalah jumlah energi yang dibutuhkan untuk memisahkan setiap bagian kecil dari itu sehingga tidak ada sepotong akan mengorbit atau bertabrakan dengan sepotong. Untuk bidang yang seragam, Wikipedia memberikan rumus ini:
Di mana G adalah konstanta gravitasi (6.672e-11 m 3 • kg -1 • s -2 ), M adalah massa, dan R adalah jari-jari.
Saya bisa membuat tantangan ini tentang hanya menghitung ini dalam Joule (kg • m 2 • s -2 ), tapi ... itu akan membosankan . Lagi pula, tidak semua orang mengerti Joule.
Jadi alih-alih, mari kita konversikan ke dalam unit berikut:
- Kiloton TNT (4,184 triliun Joule, singkatan
kilotons
) - Senjata nuklir Hiroshima (62,76 triliun Joule, steno
nukes
) - Hostess ™ Twinkies (560.000 Joule, singkatan
twinkies
) - Kilowatt-jam (tepatnya 3,6 juta Joule, steno
kWh
) - Kilogram energi massa (1 kg energi massa = 299.792.458 2 Joule, singkatan
kg
)
Jadi, ambil input berikut:
- massa dalam kilogram
- radius dalam meter
- satu dari enam input berbeda yang mewakili unit yang akan digunakan
Dan mengeluarkan energi yang mengikat dalam unit yang ditentukan. Tambahkan unit steno ke akhir output.
Aturan
- Kependekan dari Joules adalah
J
. - Ruang putih sewenang-wenang diizinkan, asalkan tidak membagi unit tulisan cepat atau nomor.
- Notasi ilmiah diizinkan, dalam format apa pun yang digunakan bahasa Anda.
- Anda hanya perlu 4 angka penting. Poin mengambang sangat dianjurkan.
- Blah blah jawaban tersingkat dalam byte.
Uji Kasus
Dihasilkan dengan spreadsheet ini .
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
Terinspirasi oleh Powering the Death Star dengan Twinkies oleh Scott Manley.
Jawaban:
05AB1E ,
5654 byteMengambil input sebagai
unit, radius, mass
Cobalah online!
Disimpan 2 byte berkat Erik the outgolfer (base 255 encode
4184
and6276
).sumber
JavaScript (ES6), 78 byte
Mengambil input sebagai 3 variabel berbeda
(mass, radius, unit)
.Uji kasus
Cuplikan berikut menjalankan semua kasus uji dalam spreadsheet yang disediakan.
Tampilkan cuplikan kode
Bagaimana?
Ini sangat mirip dengan jawaban C @ ColeraSu , dengan fungsi hash JS-friendly yang bekerja pada seluruh unit string.
sumber
Jelly , 78 byte
Cobalah online!
Hal-hal yang harus dilakukan dengan string bukan tipe tantangan Jelly ...
-7 byte terima kasih kepada pengguna202729 (terima kasih telah membantu saya tidak dikalahkan oleh JavaScript: D)
sumber
C, 113 byte
Hash karakter kedua, menggunakan trailing
'\0'
of"J"
. Array inline dalam C digunakan.Perhatikan bahwa kita perlu mengalikan yang
M
terakhir terakhir, atau itu akan meluap keinf
.Cobalah online!
sumber
APL (Dyalog Unicode) ,
153 7169 byteCobalah online!
Terima kasih kepada @ Adám karena benar-benar menghancurkan jawaban lama saya menjadi yang satu ini. Terima kasih kepada @ngn selama 2 byte.
'Fungsi' ini sebenarnya adalah operator yang dipanggil
op
. Semua nilai untuk unit pengukuran ditransformasikan ke notasi ilmiah.Bagaimana itu bekerja:
sumber
Python 3,
112106108101 BytesCukup lurus ke depan. Menggunakan
e
notasi Python . Menggunakan dikt yang membedakan unit berdasarkan huruf kedua dan membaginya dengan nilai yang sesuai.u[1:2]
pada dasarnyau[1]
, mengharapkannya kembali''
bukan kesalahan (yang saya hanya pelajari sekarang). Kemudian terapkan rumus dengan beberapa penyederhanaan.sunting: turun ke 106 berkat manusia sepenuhnya, kembali ke 108 karena nilai nuklir baru dan turun ke 101 berkat Colera Su.
Cobalah online!
sumber
Excel (Office 365),
10610197 byteMengasumsikan sel
A1
adalah massa,A2
adalah jari-jari, danB1
merupakan satuan, ditulis sebagai singkatan untuk output.Excel, 130 byte
Excel kuno tidak memiliki
SWITCH
fungsi, jadi Anda punyasumber
299792E3^2
dengan89876E12
(Masih cukup akurat untuk persyaratan pertanyaan.) Bagi semua nilai dengan1000
menyimpan 2 lainnya:=40032E-19*A1^2/(A2*SWITCH(MID(B1,2,1),"u",6276E6,"w",56,"W",360,"g",89876E8,"i",4184E5,1E-4))&B1
Switch()
fungsi ini tersedia untuk salinan desktop Excel, dan diperkenalkan dengan Office 2016.Ruby,
8382 byteMenggunakan hash khusus untuk mengindeks LUT untuk unit (
i * k mod m
rumus). Angka-angka itu ditemukan menggunakan kekerasan.sumber
Excel, 94 byte
Mengambil Misa dari
A1
, Radius dariB1
, Unit diC1
. Lihatlah ke atas2*Code(Unit) + Length(Unit) modulo 11
.sumber
Jelly , 59 byte
Saya hanya ingin mencoba metode aneh lain untuk mengkonversi unit. Tetapi sisa kode mungkin golf buruk.
Cobalah online!
Bagaimana?
Kami membangun 'tanda tangan' dari string satuan dari keutamaan kode ASCII-nya. Kami menafsirkannya sebagai nilai biner dan menerapkan modulo untuk mendapatkan indeks akhir dalam tabel pencarian.
Tautan pembantu memberikan indeks berikut untuk setiap unit:
sumber