Я безсоромно відправлю прохання про те, що я насправді вважаю корисним. Завдання полягає в тому, щоб взяти довільний малюнок поля ascii
|
+----+----+
| state A +---+
+---------+ |
|
+----v----+
| state B |
+---------+
... і перетворіть його в щось красивіше, використовуючи символи для малювання коробки Unicode, наприклад
│
╭────┴────╮
│ state A ├───╮
╰─────────╯ │
│
╭────v────╮
│ state B │
╰─────────╯
Більш детально:
- конвертувати лише + - | символи - інші символи повинні бути незмінними
використання
- КРЕСЛЕННЯ КОРОБКІВ СВІТЛИЧНІ ВЕРТИКАЛЬНІ (U + 2502) │
- КОРИСНІ КОРОБКИ СВІТЛО ГОРИЗОНТАЛЬНІ (U + 2500) ─
- КРЕСЛЕННЯ КОРОБКІВ СВІТЛО І ВПРАВО СВІТЛИ ДУГУ (U + 256D) ╭
- КРЕСЛЕННЯ КОРОБКІВ СВІТЛО ДУГИМИ ВДЕНО І Вліво (U + 256E) ╮
- КРЕСЛЕННЯ КОРОБКІВ СВІТЛО ДУХУ Вгору та Вліво (U + 256F) ╯
- КРЕСЛЕННЯ КОРОБКІВ СВІТЛО ВІД І ВПРАВИ ЛУКА (U + 2570) ╰
- КРЕСЛЕННЯ КОРОБКІВ СВІТЛО І ЛІТИ (U + 2524) ┤
- КРЕСЛЕННЯ КОРОБКИ СВІТЛО І ПРАВО (U + 251C) ├
- КРЕСЛЕННЯ КОРОБКІВ СВІТЛО ВІДОМАНІ І ГОРИЗОНТАЛЬНІ (U + 252C) ┬
- КРЕСЛЕННЯ КОРОБКІВ СВІТЛО І ГОРИЗОНТАЛЬНІ (U + 2534) ┴
КРЕСЛЕННЯ КОРОБКІВ СВЯТИЙ І ГОРИЗОНТАЛЬНИЙ (U + 253C) ┼
- завжди замінено на U + 2500
- | завжди замінюється на U + 2502
- + замінюється символом unicode, який залежить від 4 символів на північ, південь, схід і захід від нього (якщо вони існують)
- <і> трактуються як вертикальні відрізки стіни, якщо північ або південь від + (так що у вас можуть бути стрілки, що закінчуються у вертикальних стінках коробки)
- v і ^ трактуються як відрізки горизонтальної стіни, якщо схід або захід від + (так що ви можете мати стрілки, що закінчуються в горизонтальних стінках коробки)
- + трактується як сегмент стіни, якщо північ, південь, схід або захід від + (щоб лінії могли з'єднуватися поруч із куточком коробки)
Тестові шафи
+-+ +---+ +---+ |
| +-- |ABC| -+ | +++
+-+ ++--+ +---+ +-+
|
+--->
| +--+
+-v+ +---+ | | +-----+
|Hi| -> | +^-+ |world<-----+
+--+ +---+ | +-----+ |
| +--
|
---+---
|
Стає
╭─╮ ╭───╮ ╭───╮ │
│ ├── │ABC│ ─┤ │ ╭┴╮
╰─╯ ╰┬──╯ ╰───╯ ╰─╯
│
╰───>
│ ╭──╮
╭─v╮ ╭───╮ │ │ ╭─────╮
│Hi│ ─> │ ╰^─╯ │world<─────╮
╰──╯ ╰───╯ │ ╰─────╯ │
│ ╰──
│
───┼───
│
Найкоротший код виграє!
Ви, мабуть, маєте на увазі Unicode, а не UTF-8
—
Луїс Мендо
Чи могли б ми мати кілька тестових випадків? Особливо для крайових випадків, наприклад, коли два вікна торкаються краю або кута (або пояснення, що цього ніколи не відбудеться).
—
трихоплакс
Було б добре розмістити необхідні результати для цих тестових випадків.
—
манатура
Тьфу, я тільки складав відповідь :-(
—
Ніл
+
навколо нього є скрізь лінії?