Рассмотрим эти пять ASCII художественных морских существ:
- Стандартная рыба:
><>
или<><
- Быстрая рыба:
>><>
или<><<
- Крепкая рыба:
><>>
или<<><
- Эластичная рыба:
><<<>
или<>>><
- Краб:
,<..>,
Напишите программу, которая принимает произвольную строку символов <>,.
. Если есть способ интерпретировать всю строку как серию непересекающихся морских существ, то строка должна быть перепечатана с одиночными пробелами, вставленными между существами. Если такая интерпретация невозможна, ничего не должно выводиться (программа молча завершается).
Например, строку <><><>
можно интерпретировать как две стандартные рыбы подряд. Соответствующий вывод будет <>< ><>
.
В качестве другого примера, строка ><>><>>
содержит «экземпляры» of ...
(скобки добавляются только в качестве индикаторов)
- пара стандартных рыб:
[><>][><>]>
- быстрая рыба:
><[>><>]>
- крепкая рыба в двух направлениях:
[><>>]<>>
и><>[><>>]
однако только спаривание стандартной рыбы и крепкой рыбы [><>][><>>]
охватывает всю длину струны без каких-либо символов, разделяющих рыбу (без наложений). Таким образом, выходной сигнал , соответствующий ><>><>>
это ><> ><>>
.
Если есть несколько способов интерпретации строки, вы можете напечатать любой из них. (И печатать только один . Из них) , например, <><<<><
может быть истолкована как стандартная рыба и крепкая рыба: [<><][<<><]
или как безотлагательное рыбы и стандартная рыба: [<><<][<><]
. Так что либо <>< <<><
либо <><< <><
будет действительным выводом.
Раки просто для удовольствия. Поскольку они не начинаются и не заканчиваются на <
или >
, их гораздо легче идентифицировать (по крайней мере, визуально). Например, строка
,<..>,><<<>,<..>,><>,<..>,<>>><,<..>,><>>,<..>,<<><,<..>,<><,<..>,>><>
очевидно, будет производить вывод
,<..>, ><<<> ,<..>, ><> ,<..>, <>>>< ,<..>, ><>> ,<..>, <<>< ,<..>, <>< ,<..>, >><>
Вот несколько примеров строк (по одной на строку), которые не выводят:
<><>
,<..>,<..>,
>>><>
><<<<>
,
><><>
,<><>,
<<<><><<<>>><>><>><><><<>>><>><>>><>>><>><>><<><
Последняя строка здесь может быть проанализирована, если вы удалите ведущую <
:
<<>< ><<<> >><> ><> ><> <>< <>>>< >><> >><> >><> ><>> <<><
(Могут быть и другие возможные результаты.)
подробности
- Входная строка будет содержать только символы
<>,.
. - Длина входной строки будет не менее одного символа.
- Принимайте входные данные любым обычным способом (командная строка, стандартный ввод) и выводите в стандартный вывод.
- Самый короткий код в байтах побеждает. ( Удобный счетчик байтов. ) Tiebreaker - более ранний пост.