смотреть! Это лабиринт ASCII! Су кулзоры, амазонки и прочее.
+-+-----+---+
| | | |
| | ++ | |
| | ++ +-+ |
| | |
+-------+ | |
| | |
+---------+-+
Но, но, но ... тяжело понять, в каком направлении движутся все части лабиринта. Я просто хочу нарисовать макет лабиринта и сделать себя супер-куль без нагрузки времени.
Что если бы я мог просто нарисовать это в ...
#############
# # # #
# # ## # #
# # ## ### #
# # #
######### # #
# # #
#############
Это было бы так мило!
Правила (потому что правила это охлаждение):
- Напишите код для преобразования строки в ascii-лабиринт и вывода результата.
- Любой непробельный символ будет читаться как стена.
- Каждый символ стены будет определять, какой персонаж будет основан на его соседях (только в северном, южном, восточном и западном направлениях).
- Если у символа нет соседей, не являющихся пробелами, это будет знак плюс (+).
- Если у символа есть соседи как в вертикальном (север-юг), так и в горизонтальном (восток-запад) направлениях, это будет знак плюс (+).
- Если символ имеет соседей только в вертикальном (север-юг) направлении, он будет символом трубы (|).
- Если у символа есть соседи только в горизонтальном (восток-запад) направлении, это будет знак минус (-).
- Входные данные могут быть одной строкой (со строками, разделенными символами новой строки, или массивом строк).
- Все входные символы будут печатными символами ASCII, вам не нужно иметь дело с расширенными кодировками.
- Используйте любой старый язык, пожалуйста.
- Если перед строкой есть пробел, он должен быть одинаковым в каждой строке. Любой пробел после каждой строки вывода в порядке.
- Попытайтесь решить это с наименьшим количеством байтов.
Тестовые случаи:
1: рамка
Входные данные:
##########
# #
# #
# #
##########
Выход:
+--------+
| |
| |
| |
+--------+
2: классический лабиринт
Входные данные:
#################
# #
# ##### # ##### #
# # # # # #
# # # # ##### # #
# # # # #
### # ####### # #
# # # # # #
# ### # ## # ##
# # ## #
#################
Выход:
--------+-------+
| |
| --+-+ | ----+ |
| | | | | |
| + | | +---- | |
| | | | |
+-- | +----+- | |
| | | | | |
| --+ | ++ | -+
| | ++ |
+-----+-++----+--
3: Зеленые яйца, человек.
Входные данные:
I do not like green eggs and ham.
I do not like them, sam I am.
Would you like them here or there?
I would not like them anywhere!
Выход:
| ++ +++ ++++ +++++ +++- -++ ----
| ++ +++ ++++ +++++ +++ + +++
+-+++ +++ ++++ ++++ ++++ ++ +++---
| +++-+ +++ ++++ ++-+ +++++++++
4: Сосульки
Входные данные:
Word Icicle!
Word Icicle
Word cicle
ord cicle
ord icle
ord i le
or i le
or i l
or l
or
r
Выход:
++++ ++++++-
++++ ++++++
++++ +++++
+++ +++++
+++ ++++
+++ | ++
++ | ++
++ | |
++ |
++
|
-
s или почему у классического лабиринта нет четырех +
s в нижнем ряду.
smallest number of characters
, а не байты?
+
в середине 1-го ряда 2) !
Сосульки должны быть заменены на -
. Не могли бы вы еще раз проверить эти?
whitespace
, ты имеешь в виду просто пространство? Я не хочу поддерживать вкладки, и вы, вероятно, не хотите, чтобы я также трансформировал переводы строк
---
?