Вы должны написать программу или функцию, которая получает строку в качестве входных данных и выводит или возвращает, если входными данными является дерево ASCII.
_
\/ /
\_/
|
|
ASCII деревья состоят из символов / \ | _ spaces
и newlines
.
Непробельные символы соединяют две граничные точки своих ячеек отрезком линии:
/
соединяет нижний левый и верхний правый углы\
соединяет нижний правый и верхний левый углы|
соединяет средние точки нижнего края и верхнего края_
соединяет нижний левый и нижний правый углы и среднюю точку нижнего края
(Обратите внимание, что это означает, что |
может соединяться только с |
или, _
но не с /
или \
.)
Изображение ASCII называется деревом, если применяются следующие правила:
- Ровно одна точка (корень) ровно одного символа касается нижнего края последнего ряда.
Вы можете добраться до любой точки любого отрезка по:
- начиная с корня
- используя только отрезки
- никогда не идет в направлении вниз (даже в сторону вниз)
вход
- Строка, состоящая из символов
/ \ | _ space
иnewline
содержащая как минимум один непробельный символ. Вы можете выбрать один из двух форматов ввода:
- Нет лишних пробелов вокруг дерева (как видно из примеров).
- Нет лишних пробелов вокруг дерева (как видно в примерах), кроме пробелов с правой стороны строк, чтобы все строки имели одинаковую длину.
Трейлинг новой строки не является обязательным.
Выход
- Непротиворечивое истинное значение, если вход является деревом ascii.
- Согласованное ложное значение, если входные данные не являются деревом ASCII.
Примеры
Допустимые деревья:
|
_
\/ /
\_/
|
|
/ / \/
\ \____/
\/
/
/
\___/
/ \
\___/
|
|
__/
_/
/
____
\ ___
\ \/
\/\_____/
\/ \/
\__/
|
|
Неверные деревья (с дополнительными пояснениями, которые не являются частью входных данных):
\/
\_______/
\__ /
| \_/ <- reachable only on with downward route
|
_ <- multiple roots
\/ <- multiple root characters
/\ <- multiple roots
| <- unreachable part
|
__/
/ <- unreachable parts
|
\____/
| | <- multiple roots
_\__/ <- unreachable parts (_ and \ don't connect to each other)
|
Это код-гольф, поэтому выигрывает самый короткий вход.
источник
Рубин 226
227 228Онлайн тест: http://ideone.com/Z7TLTt
Программа делает следующее:
\
,/
или|
на последней строке)Вот это не разгромлено:
источник