Розглянемо наступні п'ять арт-морських істот ASCII:
- Стандартна риба:
><>
або<><
- Швидка риба:
>><>
або<><<
- Міцна риба:
><>>
або<<><
- Еластична риба:
><<<>
або<>>><
- Краб:
,<..>,
Напишіть програму, яка приймає довільну рядок символів <>,.
. Якщо є спосіб інтерпретувати всю струну як серію непересічних морських істот, то рядок слід передрукувати з окремими пробілами, вставленими між істотами. Якщо ця інтерпретація неможлива, нічого не повинно виходити (програма мовчки закінчується).
Наприклад, рядок <><><>
можна інтерпретувати як дві стандартні риби спиною до спини. Відповідний вихід був би <>< ><>
.
Як інший приклад, рядок ><>><>>
містить "екземпляри" з ...
(дужки додані лише як індикатори)
- пара стандартних риб:
[><>][><>]>
- швидка риба:
><[>><>]>
- міцна риба двома способами:
[><>>]<>>
і><>[><>>]
однак лише спарювання стандартної риби та міцної риби [><>][><>>]
охоплює всю довжину струни без символів спільного використання риб (без перекриттів). Таким чином, вихідний сигнал , відповідний ><>><>>
це ><> ><>>
.
Якщо існує декілька способів інтерпретації рядка, ви можете надрукувати будь-який з них. (І друкувати тільки один . З них) , наприклад, <><<<><
може бути витлумачена як стандартна риба і міцна риба: [<><][<<><]
або як невідкладне риби і стандартна риба: [<><<][<><]
. Отже, <>< <<><
або <><< <><
був би дійсний вихід.
Краби просто для розваги. Оскільки вони не починаються або не закінчуються <
або >
, їх значно простіше визначити (принаймні візуально). Наприклад, рядок
,<..>,><<<>,<..>,><>,<..>,<>>><,<..>,><>>,<..>,<<><,<..>,<><,<..>,>><>
Очевидно, це дасть вихід
,<..>, ><<<> ,<..>, ><> ,<..>, <>>>< ,<..>, ><>> ,<..>, <<>< ,<..>, <>< ,<..>, >><>
Ось кілька прикладів рядків (по одному на рядок), які не дають результатів:
<><>
,<..>,<..>,
>>><>
><<<<>
,
><><>
,<><>,
<<<><><<<>>><>><>><><><<>>><>><>>><>>><>><>><<><
Останній рядок тут можна проаналізувати, якщо ви видалите ведучий <
:
<<>< ><<<> >><> ><> ><> <>< <>>>< >><> >><> >><> ><>> <<><
(Можуть бути й інші можливі виходи.)
Деталі
- Рядок введення міститиме лише символи
<>,.
. - Вхідний рядок буде принаймні одним символом.
- Візьміть введення будь-яким загальним способом (командний рядок, stdin) та виведіть у stdout.
- Виграє найкоротший код у байтах. ( Зручний байтовий лічильник. ) Tiebreaker - це раніше повідомлення.