Давным-давно, когда я проводил больше времени за игрой в RPG, одной из проблем, с которой сталкивались некоторые игроки, было отслеживание движения группы и составление правильной карты. Итак, я пришел с идеей, чтобы проверить, как вы, ребята, решаете эту проблему.
Задача состоит в том, чтобы написать функцию, которая принимает в качестве входного параметра список направлений (передается в качестве структуры по вашему выбору) ^v<>, отображать карту подземелья. В примере для ввода: >>>vvv<<<^^^вывод будет:
+----+ +----+
| | |>>>v|
| ++ | |^++v|
| ++ | because |^++v|
| | |^<<<|
+----+ +----+
Testcases
>>>>>>vvvvv<<<<^^^>>v
+-------+
| |
+-+---+ |
| | |
| + | |
| +-+ |
| |
+-----+
^^^^^vvv<<<^^vv>>>>>>>>vv>><<^^^^v>>>>v^<^
+-+
+-+| | +-++-+
| || | | ++ ++
| ++ +-+ |
| +-+ |
+--+ +-+ +-+-+
| | | |
+-+ +---+
Так как это вызов гольф-кода, выигрывает самый короткий код.
Счастливого гольфа.
РЕДАКТИРОВАТЬ Извините за позднее редактирование, у меня не было много времени в последнее время.
Карта генерируется на основе движения. Он должен содержать только коридоры, которые посещали во время прогулки. Следовательно, создание одной большой комнаты не будет правильным ответом.
На карте есть три действительных символа:
|вертикальная стена|горизонтальная стена+пересечение вертикальной и горизонтальной стен.
Максимальная длина пути составляет 255 символов (но если вы можете, не ограничивайте себя).
Больше тестовых случаев:
><><><><
+--+
| |
+--+
>^<v
+--+
| |
| |
+--+
Надеюсь теперь все ясно.
vvv>>^^^<<будет производить (пересекает? Трубы?)