Considere estas cinco criaturas marinas de arte ASCII:
- Pescado estándar:
><>
o<><
- Pez veloz:
>><>
o<><<
- Pescado robusto:
><>>
o<<><
- Pescado elástico:
><<<>
o<>>><
- Cangrejo:
,<..>,
Escriba un programa que acepte una cadena arbitraria de los caracteres <>,.
. Si hay una manera de interpretar la cadena completa como una serie de criaturas marinas que no se superponen, entonces la cadena debe reimprimirse con espacios individuales insertados entre las criaturas. Si esta interpretación es imposible, no se generará nada (el programa finaliza en silencio).
Por ejemplo, la cadena <><><>
se puede interpretar como dos peces estándar consecutivos. La salida correspondiente sería <>< ><>
.
Como otro ejemplo, la cadena ><>><>>
contiene "instancias" de ...
(los corchetes solo se agregan como indicadores)
- un par de peces estándar:
[><>][><>]>
- un pez veloz:
><[>><>]>
- un pez robusto de dos maneras:
[><>>]<>>
y><>[><>>]
sin embargo, solo el emparejamiento de un pez estándar y un pez resistente [><>][><>>]
abarca toda la longitud de la cadena sin caracteres de intercambio de peces (sin superposiciones). Por lo tanto, la salida correspondiente a ><>><>>
es ><> ><>>
.
Si hay varias formas de interpretar la cadena, puede imprimir cualquiera de ellas. (Y sólo imprimir una . De ellas) Por ejemplo, <><<<><
puede ser interpretado como un pez estándar y un pez robusto: [<><][<<><]
, o como un pez rápido y un pez estándar: [<><<][<><]
. Entonces, <>< <<><
o <><< <><
sería una salida válida.
Los cangrejos son solo por diversión. Como no comienzan o terminan con <
o >
, son mucho más fáciles de identificar (al menos visualmente). Por ejemplo, la cadena
,<..>,><<<>,<..>,><>,<..>,<>>><,<..>,><>>,<..>,<<><,<..>,<><,<..>,>><>
obviamente produciría la salida
,<..>, ><<<> ,<..>, ><> ,<..>, <>>>< ,<..>, ><>> ,<..>, <<>< ,<..>, <>< ,<..>, >><>
Aquí hay algunos ejemplos de cadenas (una por línea) que no producen salida:
<><>
,<..>,<..>,
>>><>
><<<<>
,
><><>
,<><>,
<<<><><<<>>><>><>><><><<>>><>><>>><>>><>><>><<><
La última cadena aquí se puede analizar si elimina el inicio <
:
<<>< ><<<> >><> ><> ><> <>< <>>>< >><> >><> >><> ><>> <<><
(Puede haber otras salidas posibles).
Detalles
- La cadena de entrada solo contendrá los caracteres
<>,.
. - La cadena de entrada tendrá al menos un carácter de longitud.
- Tome la entrada de cualquier manera común (línea de comando, stdin) y la salida a stdout.
- El código más corto en bytes gana. ( Práctico contador de bytes ) . Tiebreaker es una publicación anterior.