Ось ASCII-мистецтво чотиристороннього перехрестя:
| | |
| |
| | |
| |
| | |
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
| | |
| |
| | |
| |
| | |
(Зверніть увагу, як горизонтальні дороги мають 3 ряди у висоту, тоді як вертикальні дороги шириною 5 колон. Це з естетичних міркувань через прямокутний шрифт.)
Ваше завдання - створити це мистецтво ASCII. Однак, як я впевнений, ви всі знаєте, не кожне перехрестя має дорогу, яка від'їжджає в кожному напрямку. Цей перехрест іде NESW
, але деякі перехрестя можуть йти, наприклад NW
:
| | |
| |
| | |
| |
| | |
-----+-----+
| |
- - -| |
| |
-----+-----+
Або може піти SWE
:
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
| | |
| |
| | |
| |
| | |
Або навіть може йти E
лише одним напрямком (хоча це перехрестя навряд чи можна назвати , але намагайтеся уникати надто педантичного):
+-----+-----
| |
| |- - -
| |
+-----+-----
Вам потрібно написати програму або функцію, яка може легко генерувати будь-яку з цих комбінацій. Більш конкретно, ваше завдання полягає в тому, щоб написати програму або функцію, яка займає рядок напрямків, що складається з NESW
вхідних даних і видає або повертає це мистецтво ASCII перехрестя з дорогами, що вказують у цих напрямках. Ці напрямки можуть з'являтися в будь-якому порядку, але вхід НЕ буде містити будь-які символи , за винятком N
, E
, S
або W
. Якщо вам подобається, ви можете попросити натомість вводити малі літери, але ви повинні вказати це у своїй відповіді. Ви також можете припустити, що всі вхідні дані будуть містити принаймні один напрямок.
Останній приклад мав провідні пробіли на кожній лінії, оскільки на захід немає дороги. Якщо у вас немає дороги на захід, ці провідні простори необов’язкові. Це:
+-----+-----
| |
| |- - -
| |
+-----+-----
Було б також прийнятним результатом. Точно так же, якщо N
або S
немає, порожні рядки там місця НЕ є обов'язковими. Допускається одна затримка нового рядка, і пробіли дозволені до тих пір, поки вихід візуально однаковий.
Ви можете приймати введення та вихід у будь-якому розумному форматі, наприклад, STDIN / STDOUT, аргументи командного рядка, файли, аргументи функції / значення повернення тощо.
Як завжди, це код-гольф , тому постарайтеся отримати якомога коротший відповідь будь-якою мовою, якою ви користуєтесь!
Зразок IO:
NESW:
| | |
| |
| | |
| |
| | |
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
| | |
| |
| | |
| |
| | |
NS:
| | |
| |
| | |
| |
| | |
+-----+
| |
| |
| |
+-----+
| | |
| |
| | |
| |
| | |
S:
+-----+
| |
| |
| |
+-----+
| | |
| |
| | |
| |
| | |
EW:
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
SE:
+-----+-----
| |
| |- - -
| |
+-----+-----
| | |
| |
| | |
| |
| | |
E
, наприклад)? Чи дозволені провідні та проміжні порожні рядки, якщо немаєN
чиS
?