Anda diangkut dalam alam semesta paralel di mana orang menulis persamaan matematika di komputer sebagai karya ASCII dengan tangan. Sebagai pecandu LaTeX, ini sama sekali tidak dapat diterima, dan Anda harus mengotomatiskan proses ini.
Tujuan Anda adalah untuk menulis sebuah program yang mengeluarkan versi ASCII dari persamaan yang dimasukkan sebagai perintah matematika LaTeX.
Perintah LaTeX wajib untuk mendukung
Sum: perintah LaTeX untuk penjumlahan adalah
\sum_{lower bound}^{upper bound}
Angka ASCII yang harus Anda gunakan untuk penjumlahan adalah:
upper bound ___ \ ` /__, lower bound
Produk: perintah LaTeX untuk suatu produk adalah
\prod_{lower bound}^{upper bound}
Sosok ASCII yang harus Anda gunakan untuk produk adalah:
upper bound ____ | | | | lower bound
Fraksi: perintah LaTeX untuk fraksi adalah
\frac{numerator}{denominator}
Angka ASCII yang harus Anda gunakan untuk fraksi adalah:
numerator ----------- denominator
Apa pun yang bukan salah satu dari tiga perintah itu ditampilkan apa adanya. Sebagai contoh, \sum{i=3}^{e^10}\frac{3x+5}{2}
harus ditampilkan sebagai
e^10
___ 3x+5
\ ` ----
/__, 2
i=3
Input
Inputnya adalah perintah LaTeX yang diteruskan sebagai string (atau bahasa Anda setara dengan string). Perintah LaTeX dapat disarangkan, misalnya \frac{\frac{1}{2}}{3}
adalah input yang valid. Input seharusnya selalu benar (tidak perlu memeriksa sintaksis LaTeX dalam kode Anda). Input hanya akan terdiri dari tiga perintah LaTeX yang disajikan di atas dan 'teks' yang tidak perlu Anda format.
Perintah LaTeX akan selalu datang dengan sintaks yang disajikan di atas, yaitu jumlah dan produk akan selalu memiliki batas atas dan bawah (meskipun mereka dapat kosong) dan akan selalu ada pembilang dan penyebut untuk pecahan.
Kami berasumsi bahwa batas jumlah dan produk paling banyak 4 karakter (= lebar jumlah dan simbol produk), sehingga Anda tidak perlu khawatir tentang kemungkinan masalah yang tumpang tindih. Untuk alasan yang sama, kami mengasumsikan bahwa batas hanyalah 'teks' dan tidak akan pernah menjadi perintah LaTeX, misalnya \sum_{\sum_{1}^{2}}^{1}
bukan input yang valid.
Keluaran
Output program Anda adalah representasi ASCII dari perintah LaTeX yang Anda berikan sebagai input.
Program Anda harus mempertimbangkan perataan horizontal: misalnya, batas-batas jumlah atau produk harus sejajar secara horizontal dengan jumlah atau simbol produk (yang keduanya lebar 4 karakter). Jika ikatan memiliki jumlah karakter ganjil, tidak masalah apakah itu satu karakter di sebelah kanan atau ke kiri dari tengah, yang mana yang baik-baik saja. Garis fraksi harus sepanjang pembilang atau penyebutnya, mana yang paling panjang.
Program Anda harus mempertimbangkan penyelarasan vertikal: misalnya, \frac{\frac{1}{2}}{3} = \frac{1}{6}
harus ditampilkan sebagai
1
-
2 1
- = -
3 6
Untuk penjumlahan dan produk, karena simbol memiliki 4 karakter, pusat vertikal dianggap sebagai garis kedua dari atas.
Spasi horizontal diasumsikan benar dalam input yang diberikan, yaitu spasi di input harus ditampilkan dalam output.
Uji kasus
Memasukkan
abc = 2
Keluaran
abc = 2
Memasukkan
e = \sum_{n=0}^{+inf} \frac{1}{n!}
Keluaran
+inf ___ 1 e = \ ` -- /__, n! n=0
Memasukkan
e^x = 1 + \frac{x}{1 - \frac{x}{2 + x - ...}}
Keluaran
x e^x = 1 + --------------- x 1 - ----------- 2 + x - ...
Memasukkan
\prod_{i=1}^{n} \frac{\sum_{j=0}^{m} 2j}{i + 1}
Keluaran
m ___ \ ` 2j n /__, ____ j=0 | | ------- | | i + 1 i=1
Memasukkan
\frac{sum}{prod} = \sum_{frac}^{prod} sum
Keluaran
prod sum ___ ---- = \ ` sum prod /__, frac
Mencetak gol
Ini kode-golf , jadi kode terpendek menang.