Ketika saya menulis dokumentasi, komentar, dll. Saya suka membuat tabel ASCII. Mereka biasanya terlihat cukup bagus, tetapi saya selalu merasa bahwa mereka dapat terlihat lebih baik - terutama karena UTF-8 / Unicode menyertakan karakter kotak gambar . Namun, karakter ini sangat memberatkan untuk digunakan, membutuhkan beberapa penekanan tombol untuk memasukkan. Tugas Anda? Tulis sebuah program atau fungsi yang dapat secara otomatis mengonversi tabel ASCII ke setara UTF-8 / Unicode.
Tantangan ini dikosongkan .
Tantangan
Tulis sebuah program, yang diberi tabel ASCII sebagai string input, mengeluarkan tabel yang digambar ulang dengan karakter menggambar kotak Unicode / UTF-8. Secara khusus, karakter yang merupakan bagian dari tabel harus diterjemahkan sebagai berikut:
(Unicode, 3 bytes each in UTF-8)
- to ─ (\u2500)
| to │ (\u2502)
= to ═ (\u2550)
and + to one of:
┌ (\u250C), ┐ (\u2510), └ (\u2514), ┘ (\u2518),
├ (\u251C), ┤ (\u2524), ┬ (\u252C), ┴ (\u2534),
┼ (\u253C)
or, if '=' on either side:
╒ (\u2552), ╕ (\u2555), ╘ (\u2558), ╛ (\u255D),
╞ (\u255E), ╡ (\u2561), ╤ (\u2564), ╧ (\u2567),
╪ (\u256A)
Detail
I / O:
- I / O standar diizinkan
- Anda dapat mengambil input dalam format wajar apa pun, termasuk tabel sebagai string, atau jalur ke file yang berisi tabel.
- Anda dapat menampilkan ke file dan mengambil nama file sebagai argumen tambahan.
- Namun, Anda tidak dapat mengubah file input . (Ini harus dipertahankan untuk kemudahan pengeditan di masa depan)
Memasukkan:
- Anda dapat mengasumsikan bahwa setiap baris input telah diisi dengan panjang yang sama dengan
. - Anda tidak boleh berasumsi bahwa karakter pertama setelah baris baru adalah bagian dari batas tabel (karena mungkin spasi).
- Input dianggap sebagai tabel yang valid jika semua karakter (yang merupakan bagian dari tabel)
-=|terhubung dengan tepat dua karakter dan+terhubung ke setidaknya satu karakter baik secara horizontal maupun vertikal. - Program Anda mungkin tidak menghasilkan kesalahan dengan input yang valid.
- Jika input tidak valid perilaku tidak terdefinisi dan Anda dapat menghasilkan output apa pun.
- Input dapat berisi karakter UTF-8, termasuk karakter gambar kotak.
Keluaran:
- Setiap karakter
-=|+yang bukan bagian dari tabel harus dibiarkan apa adanya. - Demikian pula, karakter lain apa pun harus dibiarkan apa adanya.
- Sebuah baris baru yang memimpin dan / atau mengikuti diperbolehkan.
Lain:
- Celah standar dilarang, seperti biasa.
- Jika bahasa pilihan Anda memiliki built-in yang memecahkan masalah ini, Anda tidak dapat menggunakannya.
- Ini berarti program, fungsi, subrutin atau instruksi yang akan menjadi pengiriman yang valid untuk tantangan ini tanpa tambahan.
- Masing-masing karakter yang dibutuhkan dalam tantangan ini panjangnya tiga byte ketika dikodekan dalam UTF-8.
Karakter yang terhubung :
Karakter terhubung ke yang lain, jika:
- Itu
|dan langsung di atas atau di bawah+atau|; - Ini
-dan langsung sebelum atau sesudah+atau-; - Ini
=dan langsung sebelum atau sesudah+atau=; - Itu
+dan langsung di atas atau di bawah|atau+, atau langsung sebelum atau sesudah-,=atau+.
Karakter dianggap sebagai bagian dari tabel, jika terhubung ke karakter apa pun yang merupakan bagian dari tabel. Menurut definisi, yang pertama +dalam input adalah bagian dari tabel.
Contohnya
Contoh tersedia di sini sebagai versi copy-pastable.
Input: Output:
+------------------+ ┌──────────────────┐
| Hello+World! | │ Hello+World! │
+==================+ ╞══════════════════╡
| This is+my first | -> │ This is+my first │
|+-+ code|golf +-+| │+-+ code|golf +-+│
|+-+chall|enge! +-+| │+-+chall|enge! +-+│
+------------------+ └──────────────────┘
+===+===+===+ ╒═══╤═══╤═══╕
| 1 | 2 | 3 | │ 1 │ 2 │ 3 │
+---+===+===+===+ ┌───╪═══╪═══╪═══╡
| 1 | 1 | 2 | 3 | │ 1 │ 1 │ 2 │ 3 │
+---+---+---+---+ -> ├───┼───┼───┼───┤
| 2 | 2 | 4 | 6 | │ 2 │ 2 │ 4 │ 6 │
+---+---+---+---+ ├───┼───┼───┼───┤
|-3 |-3 |-6 |-9 | │-3 │-3 │-6 │-9 │
+===+---+---+---+ ╘═══╧───┴───┴───┘
+-----+ -> <Undefined>
+-----+ -> ┌─────┐
+-----+ └─────┘
+-----------------+
| Hello, World! |
| This is invalid | -> <Undefined>
| input |
-----------------+
++++ ┌┬┬┐
++++ -> ├┼┼┤
++++ └┴┴┘
+--+
++++ -> <Undefined>
+--+
Akhirnya...
Ini adalah kode-golf , sehingga jumlah byte terkecil yang menang. Selamat bermain golf!
Hello Worldtabel pertama , tabel bagian dalam tidak dianggap membentuk tabel karena teks di dalam tabel harus tetap tidak berubah, dan mereka tidak dianggap sebagai bagian dari batas tabel luar karena mereka tidak terhubung dengan benar.
+-+kutipan berturut-turut tidak dianggap membentuk tabel yang terhubung?