Considere estas cinco criaturas marinhas de arte ASCII:
- Peixe normal:
><>
ou<><
- Peixe rápido:
>><>
ou<><<
- Peixe resistente:
><>>
ou<<><
- Peixe elástico:
><<<>
ou<>>><
- Caranguejo:
,<..>,
Escreva um programa que aceite uma sequência arbitrária de caracteres <>,.
. Se houver uma maneira de interpretar a sequência inteira como uma série de criaturas marinhas não sobrepostas, a sequência deverá ser reimpressa com espaços únicos inseridos entre as criaturas. Se essa interpretação for impossível, nada deve ser produzido (o programa termina silenciosamente).
Por exemplo, a cadeia <><><>
pode ser interpretada como dois peixes padrão consecutivos. A saída correspondente seria <>< ><>
.
Como outro exemplo, a cadeia ><>><>>
contém "instâncias" de ...
(colchetes adicionados apenas como indicadores)
- alguns peixes comuns:
[><>][><>]>
- um peixe veloz:
><[>><>]>
- um peixe robusto de duas maneiras:
[><>>]<>>
e><>[><>>]
no entanto, apenas o emparelhamento de um peixe padrão e um peixe robusto [><>][><>>]
abrange todo o comprimento da sequência, sem caracteres de compartilhamento de peixes (sem sobreposições). Assim, a saída correspondente a ><>><>>
é ><> ><>>
.
Se houver várias maneiras de interpretar a sequência, você pode imprimir qualquer uma delas. (E só imprimir uma . Delas) Por exemplo, <><<<><
pode ser interpretado como um peixe padrão e um peixe resistente: [<><][<<><]
ou como um peixe rápido e um peixe padrão: [<><<][<><]
. Então, <>< <<><
ou <><< <><
seria uma saída válida.
Os caranguejos são apenas para diversão. Como eles não começam ou terminam com <
ou >
, eles são muito mais fáceis de identificar (pelo menos visualmente). Por exemplo, a sequência
,<..>,><<<>,<..>,><>,<..>,<>>><,<..>,><>>,<..>,<<><,<..>,<><,<..>,>><>
obviamente produziria a saída
,<..>, ><<<> ,<..>, ><> ,<..>, <>>>< ,<..>, ><>> ,<..>, <<>< ,<..>, <>< ,<..>, >><>
Aqui estão alguns exemplos de cadeias (uma por linha) que não produzem saída:
<><>
,<..>,<..>,
>>><>
><<<<>
,
><><>
,<><>,
<<<><><<<>>><>><>><><><<>>><>><>>><>>><>><>><<><
A última string aqui pode ser analisada se você remover a principal <
:
<<>< ><<<> >><> ><> ><> <>< <>>>< >><> >><> >><> ><>> <<><
(Pode haver outras saídas possíveis.)
Detalhes
- A sequência de entrada conterá apenas os caracteres
<>,.
. - A sequência de entrada terá pelo menos um caractere.
- Pegue a entrada de qualquer maneira comum (linha de comando, stdin) e faça a saída para stdout.
- O código mais curto em bytes vence. ( Contador de bytes à mão. ) O desempatador é uma postagem anterior.