Ви повинні написати програму або функцію, яка отримує блок символів, представлений у вигляді рядка, і виводить або повертає аналогічний рядок, в якому з'єднані літери, суміжні в алфавіті.
Наочний приклад (у формі 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
дійсно приємне мистецтво ascii
—
Optimizer
Що робити, якщо накладки X і + повинні знаходитися в одному місці? Або це не випадок, з якого ми повинні брати участь?
—
theonlygusti
@theonlygusti «Якщо більш ніж дві лінії перетинаються будь-яка пара з них буде один з допустимих накладень» , як , наприклад ,
—
randomra
/
і -
є недійсними дублювання X
і +
( / \ - and |
) не може відбуватися в тому ж положенні.
Ще розгублений; чому б не навести нам кілька прикладів?
—
theonlygusti
@theonlygusti: В принципі, це не той випадок , ви повинні враховувати
—
Claudiu