Saya tanpa malu memposting permintaan untuk sesuatu yang benar-benar bermanfaat bagi saya. Tugasnya adalah mengambil kotak ascii gambar sewenang-wenang seperti ini
|
+----+----+
| state A +---+
+---------+ |
|
+----v----+
| state B |
+---------+
... dan mengubahnya menjadi sesuatu yang lebih indah menggunakan karakter menggambar kotak unicode, misalnya
│
╭────┴────╮
│ state A ├───╮
╰─────────╯ │
│
╭────v────╮
│ state B │
╰─────────╯
Lebih detail:
- konversikan hanya + - | karakter - karakter lain tidak boleh berubah
menggunakan
- KOTAK GAMBAR CAHAYA VERTIKAL (U + 2502) │
- KOTAK GAMBAR HORIZONTAL CAHAYA (U + 2500) ─
- GAMBAR KOTAK CAHAYA ARC BAWAH DAN KANAN (U + 256D) ╭
- KOTAK GAMBAR CAHAYA ARC BAWAH DAN KIRI (U + 256E) ╮
- KOTAK GAMBAR CAHAYA DAN KIRI CAHAYA (U + 256F) ╯
- GAMBAR KOTAK CAHAYA ARC UP DAN KANAN (U + 2570) ╰
- GAMBAR KOTAK CAHAYA VERTIKAL DAN KIRI (U + 2524) ┤
- GAMBAR KOTAK CAHAYA VERTIKAL DAN KANAN (U + 251C) ├
- GAMBAR KOTAK BAWAH CAHAYA DAN HORISONTAL (U + 252C) ┬
- GAMBAR KOTAK YANG TERANG DAN HORIZONTAL (U + 2534) ┴
GAMBAR KOTAK CAHAYA VERTIKAL DAN HORIZONTAL (U + 253C) ┼
- selalu diganti dengan U + 2500
- | selalu diganti dengan U + 2502
- + diganti dengan karakter unicode yang tergantung pada 4 karakter di utara, selatan, timur, dan barat (jika ada)
- <dan> diperlakukan sebagai segmen dinding vertikal jika utara atau selatan tanda + (sehingga Anda dapat memiliki panah yang berakhir di dinding vertikal kotak)
- v dan ^ diperlakukan sebagai segmen dinding horizontal jika timur atau barat + (sehingga Anda dapat memiliki anak panah yang berakhir di dinding horizontal kotak)
- + diperlakukan sebagai segmen dinding jika salah satu dari utara, selatan, timur atau barat + (sehingga garis dapat terhubung di sebelah sudut kotak)
testcases
+-+ +---+ +---+ |
| +-- |ABC| -+ | +++
+-+ ++--+ +---+ +-+
|
+--->
| +--+
+-v+ +---+ | | +-----+
|Hi| -> | +^-+ |world<-----+
+--+ +---+ | +-----+ |
| +--
|
---+---
|
Menjadi
╭─╮ ╭───╮ ╭───╮ │
│ ├── │ABC│ ─┤ │ ╭┴╮
╰─╯ ╰┬──╯ ╰───╯ ╰─╯
│
╰───>
│ ╭──╮
╭─v╮ ╭───╮ │ │ ╭─────╮
│Hi│ ─> │ ╰^─╯ │world<─────╮
╰──╯ ╰───╯ │ ╰─────╯ │
│ ╰──
│
───┼───
│
Kode terpendek menang!
Anda mungkin maksudkan Unicode daripada UTF-8
—
Luis Mendo
Bisakah kita memiliki beberapa test case? Terutama untuk kasus tepi seperti di mana dua kotak menyentuh di tepi atau sudut (atau klarifikasi bahwa ini tidak akan pernah terjadi).
—
trichoplax
Akan menyenangkan untuk memposting output yang diperlukan untuk kasus uji tersebut.
—
manatwork
Ugh, aku baru saja menyusun jawaban :-(
—
Neil
+
memiliki garis di mana-mana?