Вот ASCII-искусство пересечения с 4 путями:
| | |
| |
| | |
| |
| | |
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
| | |
| |
| | |
| |
| | |
(Обратите внимание, что горизонтальные дороги имеют 3 строки в высоту, а вертикальные дороги - 5 столбцов. Это из эстетических соображений из-за прямоугольного шрифта.)
Ваша задача - создать это искусство ASCII. Однако, как я уверен, вы все знаете, не на каждом перекрестке есть дорога, которая движется в каждом направлении. Это конкретное пересечение идет NESW
, но некоторые пересечения могут идти, например NW
:
| | |
| |
| | |
| |
| | |
-----+-----+
| |
- - -| |
| |
-----+-----+
Или это может пойти SWE
:
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
| | |
| |
| | |
| |
| | |
Или это может даже пойти E
, только одно направление (хотя вы вряд ли можете назвать это пересечением , но постарайтесь не быть чрезмерно педантичным):
+-----+-----
| |
| |- - -
| |
+-----+-----
Вам нужно написать программу или функцию, которая может легко генерировать любую из этих комбинаций. Более конкретно, ваша задача состоит в том, чтобы написать программу или функцию, которая принимает строку направлений, состоящую из NESW
входных данных, и выводит или возвращает это искусство ASCII пересечения с дорогами, указывающими в этих направлениях. Эти направления могут появляться в любом порядке, но вход не будет содержать любые символы , за исключением N
, E
, S
или W
. Если хотите, вы можете запросить ввод данных в нижнем регистре, но вы должны указать это в своем ответе. Вы также можете предположить, что все входные данные будут содержать хотя бы одно направление.
В последнем примере были пробелы в каждой строке, потому что на запад нет дороги. Если у вас нет дороги, ведущей на запад, эти пробелы не обязательны. Это:
+-----+-----
| |
| |- - -
| |
+-----+-----
Также будет приемлемый вывод. Точно так же, если N
или S
ушел, пустые строки там не являются обязательными. Разрешается одна конечная новая строка, а конечные пробелы допускаются, если результат визуально одинаков.
Вы можете принимать ввод и вывод в любом приемлемом формате, таком как STDIN / STDOUT, аргументы командной строки, файлы, аргументы функций / возвращаемые значения и т. Д.
Как обычно, это код-гольф , поэтому постарайтесь получить максимально короткий ответ на любом языке, который вы используете!
Образец ввода-вывода:
NESW:
| | |
| |
| | |
| |
| | |
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
| | |
| |
| | |
| |
| | |
NS:
| | |
| |
| | |
| |
| | |
+-----+
| |
| |
| |
+-----+
| | |
| |
| | |
| |
| | |
S:
+-----+
| |
| |
| |
+-----+
| | |
| |
| | |
| |
| | |
EW:
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
SE:
+-----+-----
| |
| |- - -
| |
+-----+-----
| | |
| |
| | |
| |
| | |
E
)? Разрешены ли начальные и конечные пустые строки, если нетN
илиS
?