Diberikan string huruf ASCII (huruf besar dan kecil), menghasilkan MathJax mentah yang diperlukan untuk menampilkan string yang bercabang dua pada setiap karakter, menjadi superskrip dan subskrip. Misalnya, input cat
dan horse
akan menghasilkan output yang dirender MathJax sebagai berikut, masing-masing:
Perhatikan bahwa hanya satu input yang harus diambil - keduanya terdaftar berdampingan hanya untuk menghemat ruang vertikal.
Makna markup
_
menunjukkan suatu subskrip.^
menunjukkan superskrip.- Kawat gigi diperlukan di sekitar substring superskrip atau subskrip yang berisi superskrip atau subskrip lebih lanjut untuk mencegah mereka semua berada di level yang sama.
Uji kasus
Kasing uji ada dalam format input : output
. Kasing uji pertama menunjukkan string kosong sebagai input harus menghasilkan string kosong sebagai output.
"" : ""
"a" : "a"
"me" : "m_e^e"
"cat" : "c_{a_t^t}^{a_t^t}"
"frog" : "f_{r_{o_g^g}^{o_g^g}}^{r_{o_g^g}^{o_g^g}}"
"horse" : "h_{o_{r_{s_e^e}^{s_e^e}}^{r_{s_e^e}^{s_e^e}}}^{o_{r_{s_e^e}^{s_e^e}}^{r_{s_e^e}^{s_e^e}}}"
"bifurcate" : "b_{i_{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}^{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}}^{i_{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}^{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}}"
Anda dapat melihat bagaimana ini dirender dengan menempelkan output ke mathurl.com .
Tidak ada kawat gigi yang berlebihan
MathJax dengan senang hati akan membuat markup yang memiliki kawat gigi yang berlebihan. Sebagai contoh, berikut ini semua akan terlihat sama ketika diberikan: a
, {a}
, {}{a}
, {{{{a}}}}
.
Namun, keluaran yang valid untuk tantangan ini tidak memiliki kawat gigi yang berlebihan. Perhatikan khususnya bahwa karakter tunggal dalam output tidak dikelilingi oleh kawat gigi.
Memesan
Urutan subskrip dan superskrip tidak penting. Berikut ini adalah setara dan akan tidak bisa dibedakan ketika diberikan (dan semuanya sama-sama keluaran yang valid):
c_{a_t^t}^{a_t^t}
c_{a^t_t}^{a_t^t}
c_{a_t^t}^{a^t_t}
c_{a^t_t}^{a^t_t}
c^{a_t^t}_{a_t^t}
c^{a^t_t}_{a_t^t}
c^{a_t^t}_{a^t_t}
c^{a^t_t}_{a^t_t}
Mencetak gol
Untuk setiap bahasa, pemenangnya adalah kode terpendek dalam byte.
Terlalu banyak notifikasi? Ketik </sub>
untuk berhenti berlangganan
</sub>
untuk berhenti berlangganan ya siapa bilang aku ingin berhenti berlangganan atau apa? Itu adalah tes untuk melihat apakah saya membaca seluruh posting, kan?Jawaban:
Python,
9590869282 byte10 byte disimpan berkat @ConnerJohnston
Cobalah online!
sumber
[text](link)
, tetapi itu benar-benar rusak;)Mathematica,
72847776 byteMenggunakan pengkodean CP-1252 (Windows). Mengambil daftar karakter sebagai input.
Penjelasan
Tentukan fungsi
±
, dengan 2 atau lebih argumen. Beri label pada argumen pertamaa
, dan kedua dan seterusnyab
.Buat yang
List
setara dengan"{a_±b^±b}"
(±b
dievaluasi lagi, secara rekursif).Tentukan fungsi
±
, dengan argumen 1 atau 0. Label argumen pertamaa
, jika ada, dan menetapkan""
untuka
sebaliknya.Buat yang
List
setara dengan"a"
, diisi denganString
s kosong .Fungsi murni yang berlaku
±
untuk input, menjatuhkan elemen pertama dan terakhir, dan mengubahnyaList
menjadiString
.sumber
CJam (35 byte)
Ini adalah program lengkap. Demo online .
3 byte bekerja di sekitar bug di interpreter (lihat di bawah).
Pembedahan
Perhatikan bahwa
min(n+1, 3)
ini adalah untuk mengatasi bug dalam juru bahasa: harus ada beberapa pola dalam kekuatan 10 yang'}
lebih kecil dari, tetapi tidak jelas .sumber
JavaScript (ES6),
5755 byteΘ kompleksitas (len)!Menurut @PeterTaylor, ini sebenarnya Θ (2 ^ len (s)), yang masih merupakan yang terbaik ...sumber
Haskell , 71 byte
Cobalah online!
Jika kita hanya harus mengeluarkan kode yang valid, berikut ini akan bekerja untuk 44 byte:
Cobalah online!
sumber
SOGL V0.12 , 21 byte
Coba Di Sini!
Penjelasan:
sumber
Perl 5 , 54 + 1 (-p) = 55 byte
Cobalah online!
Bagaimana?
Substitusi dalam kondisi while memecah kemunculan beberapa huruf pada huruf pertama, diikuti oleh yang lainnya dalam kurung kurawal seperti ini:
Loop sementara menjalankan substitusi hingga tidak ada lagi urutan multi-huruf yang tersisa. Substitusi di dalam loop menghilangkan kawat gigi dari sekitar satu huruf.
sumber
Ruby ,
767372686757 bytePenggunaan tabungan lambda 4 byte berkat Tutleman
Cobalah online!
Tidak Disatukan:
sumber
->s{...}
), yang menyimpan 7 byte. Kemudian, Anda dapat menyimpan 2 byte lebih banyak dengan menggantinya"#{s[0]}_
dengans[0]+"_
. Anda dapat menyimpan satu byte lebih lanjut dengan melakukan penugasan sebaris'{}'
ke suatu variabel saat pertama kali Anda menggunakannya.t=f s[1..-1]
), jadi saya tidak berpikir fungsi anonim akan bekerja, dan saya sudah mengatur ulang awal string, tapi saya bisa menggunakan tugas inline.f=->s{...}
menyimpan 4 byte, bahkan terhitung untuk tambahan yang[]
Anda butuhkan saat melakukan panggilan rekursif..tr
kekacauan itu ...Python 2 , 84 byte
Cobalah online!
sumber
Pyth , 47 byte
Cobalah online!
Ini adalah port langsung dari jawaban Python @ Uriel. Pergi ke golf turun sedikit.
sumber
PHP, 121 byte
Fungsi itu sendiri 104 byte dan menunjukkan Pemberitahuan PHP.
sumber
Retina , 43 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan:
Dapatkan bola bergulir dengan memotong karakter terakhir. (Tapi jika itu satu-satunya karakter, mereka biarkan saja.)
Pindahkan karakter ¶ mundur satu langkah pada satu waktu, setiap kali mengambil hasil sebelumnya dan menjadikannya subskrip dan superskrip dari karakter berikutnya.
Hapus ¶ yang sekarang berlebih dan bagian luar {} s.
sumber
Java (OpenJDK 8) , 121 byte
Cobalah online!
sumber
Javascript, 73 Bytes
Penjelasan
Karena tidak ada nilai awal yang ditentukan
m
,reduceRight
ambil elemen terakhirs
sebagai nilai awal, dan mulai iterasi pada indekss.length-2
.Tampilkan cuplikan kode
sumber
s=>[...s].reduceRight((m,c)=>`{${c}_${m}^${m}}`).slice(1,-1)
hanya 60 byte.