pengantar
Sistem penyusunan huruf LaTeX menggunakan makro untuk mendefinisikan aksen. Misalnya, huruf ê diproduksi oleh \hat{e}
. Dalam tantangan ini, tugas Anda adalah mengimplementasikan versi ASCII dari fungsi ini.
Memasukkan
Input Anda adalah string karakter ASCII yang tidak kosong yang dapat dicetak. Itu tidak akan mengandung baris baru.
Keluaran
Output Anda adalah string yang terdiri dari dua baris. Baris pertama berisi aksen, dan baris kedua karakter mereka. Itu diperoleh dari input sebagai berikut ( A
menunjukkan karakter sewenang-wenang):
- Setiap
\bar{A}
digantikan olehA
dengan_
di atasnya. - Setiap
\dot{A}
digantikan olehA
dengan.
di atasnya. - Setiap
\hat{A}
digantikan olehA
dengan^
di atasnya. - Untuk bonus -10%: setiap
\tilde{A}
diganti denganA
dengan~
di atasnya. - Semua karakter lain memiliki spasi di atasnya.
Misalnya input
Je suis pr\hat{e}t.
menghasilkan output
^
Je suis pret.
Aturan dan penilaian
Anda dapat mengasumsikan bahwa karakter \{}
hanya terjadi di makro \bar{}
, \dot{}
dan \hat{}
(dan \tilde{}
jika Anda pergi untuk bonus). Semua argumen makro panjangnya tepat satu karakter, jadi \dot{foo}
dan \dot{}
tidak akan muncul dalam input. Outputnya bisa berupa string yang dipisahkan oleh baris baru, atau daftar / pasangan dari dua string. Berapapun spasi spasi awal dan sebelumnya diizinkan, asalkan aksennya ada di tempat yang benar. Secara khusus, jika tidak ada aksen, output dapat berupa string tunggal.
Anda dapat menulis program atau fungsi lengkap. Hitungan byte terendah (setelah bonus) menang, dan celah standar tidak diizinkan.
Uji kasus
Tanpa bonus:
Input:
No accents.
Output:
No accents.
Input:
Ch\hat{a}teau
Output:
^
Chateau
Input:
Som\bar{e} \dot{a}cc\hat{e}nts.
Output:
_ . ^
Some accents.
Input:
dot hat\dot{h}a\hat{t}\hat{ }x\bar{x}dot
Output:
. ^^ _
dot hathat xxdot
Input:
\hat{g}Hmi\hat{|}Su5Y(\dot{G}"\bar{$}id4\hat{j}gB\dot{n}#6AX'c\dot{[}\hat{)} 6\hat{[}T~_sR\hat{&}CEB
Output:
^ ^ . _ ^ . .^ ^ ^
gHmi|Su5Y(G"$id4jgBn#6AX'c[) 6[T~_sR&CEB
Dengan bonus:
Input:
Ma\tilde{n}ana
Output:
~
Manana
Input:
\dot{L}Vz\dot{[}|M.\bar{#}0\hat{u}U^y!"\tilde{I} K.\bar{"}\hat{m}dT\tilde{$}F\bar{;}59$,/5\bar{'}K\tilde{v}R \tilde{E}X`
Output:
. . _ ^ ~ _^ ~ _ _ ~ ~
LVz[|M.#0uU^y!"I K."mdT$F;59$,/5'KvR EX`
sumber
\bar{foo}
input yang valid?Jawaban:
Pyth,
514645434140 byteSaya menghapus kurung kurawal dan membelah
\
, seperti jawaban CJam dari Reto Koradi. Kodebar
,dot
danhat
dikenali hanya dengan angka desimal terakhir dari kode karakter karakter pertama, modulo 3. Saya hanya menambahkan (RIP) ke bagian pertama dan menghapusnya pada akhirnya untuk menyimpan kode untuk menangani bagian pertama khusus .barf
""""
Cobalah online. Suite uji.
sumber
barf
... " +1Julia,
204184 byte * 0,9 = 165,6Ini adalah fungsi anonim yang menerima string dan mengembalikan tupel string yang sesuai dengan garis atas dan bawah. Baris teratas akan memiliki spasi spasi tambahan. Untuk memanggil fungsi, berikan nama, mis
f=x->...
Tidak Disatukan:
sumber
CJam, 53 byte
Cobalah online
Penjelasan:
sumber
Haskell, 156 * 0,9 = 140,4 byte
Contoh penggunaan:
Bagaimana cara kerjanya: pergi melalui karakter string input oleh karakter dan membangun daftar pasangan karakter, kiri untuk string output atas, kanan untuk string output lebih rendah. Jika a
\
ditemukan, ambil aksen yang sesuai, atau ruang untuk elemen kiri. Akhirnya mengubah daftar pasangan menjadi satu string.sumber
Python 3, 203 byte
Tanpa bonus:
Saya sangat berharap ada versi yang lebih pendek.
sumber
<s></s>
, lalu mengetikkan byte baru sehingga kita bisa melihat langkah-langkah menuju penyelesaian.