Considérez ces cinq créatures marines de l'art ASCII:
- Poisson standard:
><>
ou<><
- Poisson rapide:
>><>
ou<><<
- Poisson robuste:
><>>
ou<<><
- Poisson extensible:
><<<>
ou<>>><
- Crabe:
,<..>,
Ecrivez un programme qui accepte une chaîne arbitraire de caractères <>,.
. S'il existe un moyen d'interpréter la chaîne entière comme une série de créatures marines ne se chevauchant pas, la chaîne doit alors être réimprimée avec des espaces simples insérés entre les créatures. Si cette interprétation est impossible, rien ne doit être sorti (le programme se termine en silence).
Par exemple, la chaîne <><><>
peut être interprétée comme deux poissons standard dos à dos. La sortie correspondante serait <>< ><>
.
Autre exemple, la chaîne ><>><>>
contient des "instances" de ...
(les crochets sont uniquement ajoutés en tant qu'indicateurs)
- un couple de poissons standard:
[><>][><>]>
- un poisson rapide:
><[>><>]>
- un poisson robuste de deux manières:
[><>>]<>>
et><>[><>>]
cependant, seuls l'appariement d'un poisson standard et d'un poisson robuste [><>][><>>]
s'étend sur toute la longueur de la chaîne sans caractères de partage du poisson (sans chevauchement). Ainsi, la sortie correspondant à ><>><>>
est ><> ><>>
.
Si la chaîne peut être interprétée de plusieurs manières, vous pouvez en imprimer une quelconque. (Et seulement imprimer un . D'entre eux), par exemple, <><<<><
peut être interprété comme un poisson standard et un poisson solide: [<><][<<><]
, ou comme un poisson rapide et un poisson standard: [<><<][<><]
. Donc, <>< <<><
ou <><< <><
serait une sortie valide.
Les crabes sont juste pour s'amuser. Comme ils ne commencent ni ne finissent avec <
ou >
, ils sont beaucoup plus faciles à identifier (au moins visuellement). Par exemple, la chaîne
,<..>,><<<>,<..>,><>,<..>,<>>><,<..>,><>>,<..>,<<><,<..>,<><,<..>,>><>
produirait évidemment la sortie
,<..>, ><<<> ,<..>, ><> ,<..>, <>>>< ,<..>, ><>> ,<..>, <<>< ,<..>, <>< ,<..>, >><>
Voici quelques exemples de chaînes (une par ligne) qui ne produisent aucune sortie:
<><>
,<..>,<..>,
>>><>
><<<<>
,
><><>
,<><>,
<<<><><<<>>><>><>><><><<>>><>><>>><>>><>><>><<><
La dernière chaîne ici peut être analysée si vous supprimez le début <
:
<<>< ><<<> >><> ><> ><> <>< <>>>< >><> >><> >><> ><>> <<><
(Il peut y avoir d'autres sorties possibles.)
Détails
- La chaîne de saisie ne contiendra que les caractères
<>,.
. - La chaîne en entrée aura au moins un caractère.
- Prenez les entrées de n'importe quelle manière courante (ligne de commande, stdin) et exportez-les vers stdout.
- Le code le plus court en octets gagne. ( Compteur d'octets pratique. ) Tiebreaker est une publication antérieure.