Sto pubblicando spudoratamente una richiesta per qualcosa che troverei davvero utile. Il compito è quello di prendere un disegno ASCII arbitrario come questo
|
+----+----+
| state A +---+
+---------+ |
|
+----v----+
| state B |
+---------+
... e trasformalo in qualcosa di più bello usando la casella Unicode che disegna personaggi, ad es
│
╭────┴────╮
│ state A ├───╮
╰─────────╯ │
│
╭────v────╮
│ state B │
╰─────────╯
Più in dettaglio:
- converti solo + - | personaggi: gli altri personaggi dovrebbero rimanere invariati
uso
- SCATOLA DISEGNI LUCE VERTICALE (U + 2502) │
- SCATOLA DISEGNI LUCE ORIZZONTALE (U + 2500) ─
- SCATOLA DISEGNI ARCO CHIARO GIÙ E DESTRA (U + 256D) ╭
- SCATOLA DISEGNI ARCO CHIARO GIÙ E SINISTRA (U + 256E) ╮
- SCATOLA DISEGNI ARCO CHIARO E SINISTRA (U + 256F) ╯
- SCATOLA DISEGNI ARCO CHIARO SU E DESTRA (U + 2570) ╰
- SCATOLA DISEGNI CHIARO VERTICALE E SINISTRA (U + 2524) ┤
- SCATOLA DISEGNI LUCE VERTICALE E DESTRA (U + 251C) ├
- SCATOLA DISEGNI CHIARI E ORIZZONTALI (U + 252C) ┬
- DISEGNI SCATOLA ILLUMINATI E ORIZZONTALI (U + 2534) ┴
SCATOLA DISEGNI LEGGERI VERTICALI E ORIZZONTALI (U + 253C) ┼
- sempre sostituito con U + 2500
- | sempre sostituito con U + 2502
- + viene sostituito con un carattere unicode che dipende dai 4 caratteri nord, sud, est e ovest di esso (se esistono)
- <e> sono trattati come segmenti di muro verticali se a nord o a sud di un + (in modo che si possano avere frecce che terminano in muri verticali di una scatola)
- v e ^ sono trattati come segmenti di muro orizzontale se est o ovest di un + (in modo da poter avere le frecce che terminano in muri orizzontali di una scatola)
- + viene trattato come un segmento di muro se nord, sud, est o ovest di un + (in modo che le linee possano connettersi accanto a un angolo della casella)
Casi test
+-+ +---+ +---+ |
| +-- |ABC| -+ | +++
+-+ ++--+ +---+ +-+
|
+--->
| +--+
+-v+ +---+ | | +-----+
|Hi| -> | +^-+ |world<-----+
+--+ +---+ | +-----+ |
| +--
|
---+---
|
diventa
╭─╮ ╭───╮ ╭───╮ │
│ ├── │ABC│ ─┤ │ ╭┴╮
╰─╯ ╰┬──╯ ╰───╯ ╰─╯
│
╰───>
│ ╭──╮
╭─v╮ ╭───╮ │ │ ╭─────╮
│Hi│ ─> │ ╰^─╯ │world<─────╮
╰──╯ ╰───╯ │ ╰─────╯ │
│ ╰──
│
───┼───
│
Vince il codice più corto!
+
ha delle linee attorno ad esso ovunque?