Tantangan
Diberikan daftar unit dasar SI, daftar persamaan dan target, Anda harus menurunkan unit target hanya menggunakan unit dasar.
Unit yang diturunkan
Dari Wikipedia:
Sistem Satuan Internasional (SI) menetapkan satu set tujuh unit dasar dari mana semua unit pengukuran SI lainnya diturunkan. Masing-masing unit lainnya (unit turunan SI) tidak berdimensi atau dapat dinyatakan sebagai produk kekuatan satu atau lebih dari unit dasar.
Sebagai contoh, satuan luas turunan SI adalah meter persegi (m 2 ), dan satuan kepadatan turunan SI adalah kilogram per meter kubik (kg / m 3 atau kg m −3 ).
Tujuh unit dasar SI adalah:
- Ampere, A
- Candela, cd
- Kelvin, K
- Kilogram, kg
- Meter, m
- Mol, mol
- Kedua, s
Contoh
Memasukkan
Unit dasar:
d [m]
m [kg]
t [s]
Persamaan:
v = d/t
a = v/t
F = m*a
E = F*d
Target:
E
Keluaran
E [kg*m*m/s/s]
Memasukkan
Unit dasar:
G [cd]
L [m]
y [A]
a [K]
Persamaan:
T = y*y/L
A = T*G
Target:
A
Keluaran
A [cd*A*A/m]
Aturan
Unit akan selalu diberikan dalam bentuk
a [b]
Di mana a
akan menjadi huruf abjad huruf besar atau kecil dan b
akan menjadi unit (satu atau lebih karakter).
Persamaannya akan dalam bentuk
a = c
Di mana c
akan ada ekspresi yang hanya akan menggunakan unit yang telah ditentukan sebelumnya dan operator *
dan /
.
Kekuatan harus diperluas. Misalnya, unit area secara resmi m^2
, tetapi Anda harus mewakili ini sebagai m*m
. Hal yang sama berlaku untuk kekuatan negatif seperti kecepatan ( m*s^-1
) yang harus direpresentasikan sebagai divisi: m/s
. Demikian pula, unit untuk akselerasi, m/s^2
atau m*s^-2
, harus direpresentasikan sebagai m/s/s
.
Anda tidak harus melakukan pembatalan. Misalnya, output C*s/kg/s
valid meskipun dapat dibatalkan hingga C/kg
.
Tidak ada urutan tertentu untuk perkalian: kg*s/m
, s/m*kg
, s*kg/m
semuanya valid (tapi /m*s*kg
tidak valid).
Catatan: Anda tidak akan pernah harus membagi dengan unit yang diturunkan.
Kemenangan
Kode terpendek dalam byte menang
Jawaban:
Retina ,
5048 byteCobalah online!
Penjelasan
Hapus semua tanda sama dengan ruang di depannya. Lagi pula siapa yang butuh itu ...
Ini melakukan pergantian jumlah yang dikenal. Berulang kali cocok dengan definisi kuantitas (kuantitas adalah karakter apa pun di depan spasi dan definisi string setelahnya), serta beberapa tempat setelah definisi di mana kuantitas itu digunakan, dan masukkan definisi untuk penggunaan. Kami mengecualikan unit dari pertandingan tersebut (dengan memastikan bahwa tidak ada
]
setelah pertandingan), sehingga kami tidak mengganti[m]
dengan[[kg]]
misalnya. Substitusi ini diulang sampai regex tidak lagi cocok (yang berarti bahwa tidak ada penggunaan kuantitas yang tersisa, dan semua lini telah diubah menjadi ekspresi unit).Buang semua kecuali baris terakhir.
Akhirnya, lepaskan kurung kotak asing. Pada dasarnya, kami ingin menyimpan yang pertama
[
dan yang terakhir]
tetapi membuang yang lainnya. Yang lain selalu muncul dengan operator di antaranya, baik sebagai]*[
atau sebagai]/[
. Tetapi yang lebih penting, itu adalah satu-satunya kasus di mana a]
diikuti oleh dua karakter lagi. Jadi kami mencocokkan semua]
dengan dua karakter setelahnya, dan menggantinya dengan yang kedua dari tiga karakter untuk mempertahankan operator.sumber
JavaScript (ES6),
155153152 byteMengambil satuan dasar dan persamaan sebagai array string.
Tampilkan cuplikan kode
Penjelasan
sumber