Вы должны написать программу или функцию, которая получает блок символов, представленных в виде строки, и выводит или возвращает аналогичную строку, в которой соединены буквы, смежные в алфавите.
Наглядный пример (в виде input => output
):
b d b d
|\ /|
| \ / |
=> | X |
| / \ |
e |/ \e
c a c a
Детали
- На входе будет строка, содержащая пробелы, символы новой строки и ровно одну из первых
N
строчных букв.1 <= N <= 26
- Строки ввода будут дополнены пробелами, образующими полный прямоугольный блок.
- Каждая пара букв, смежных в алфавите, будет находиться в одной строке, столбце или диагональной линии и должна быть соединена с помощью прямой линии ascii
\ / | or -
. (Строка может иметь длину 0.) Следующие типы двухстрочных перекрытий должны обрабатываться:
/ and \ become X | and - become + / and / become / \ and \ become \ | and | become | - and - become - [letter] and [anything] become [letter]
Никакого другого вида двухстрочного перекрытия не произойдет.
- Если более двух линий перекрываются, любая пара из них гарантированно будет одной из действительных перекрытий. (например,
[letter] / |
триплет никогда не произойдет) - Помимо изменения пробелов на
\ / | - X and +
входе и выходе должны быть идентичны. - Трейлинг новой строки необязателен, но должен быть одинаковым для ввода и вывода.
- Это код-гольф, поэтому выигрывает самый короткий вход.
Примеры
Входные данные:
b d
h gi
e f
c a
Выход:
b d
|\ /|
| \ / |
| X h+--gi
| / \ | |
|/ \e--f
c a
Входные данные:
dk j
b l
c fg
a m
i h
e
Выход:
dk----j
/|| /
b / |l /
|X | \/
c \ fg/\
\|/\ \
a \ m
/| \
i-+----h
e
Входные данные:
eti sqjh k p u cfm vb owgzyx rnd la
Выход:
eti--sqjh-k--p--u--cfm-vb-owgzyx-rnd-la
Входные данные:
a
Выход:
a
/
и -
являются недействительными дублирования X
и +
( / \ - and |
) не может происходить в том же положении.