Considera queste cinque creature marine ASCII art:
- Pesce standard:
><>
o<><
- Pesce veloce:
>><>
o<><<
- Pesce robusto:
><>>
o<<><
- Pesce elastico:
><<<>
o<>>><
- Granchio:
,<..>,
Scrivi un programma che accetta una stringa arbitraria di caratteri <>,.
. Se c'è un modo di interpretare l' intera stringa come una serie di creature marine non sovrapposte, allora la stringa dovrebbe essere ristampata con spazi singoli inseriti tra le creature. Se questa interpretazione è impossibile, non dovrebbe essere emesso nulla (il programma termina silenziosamente).
Ad esempio, la stringa <><><>
può essere interpretata come due pesci standard back-to-back. L'output corrispondente sarebbe <>< ><>
.
Come altro esempio, la stringa ><>><>>
contiene "istanze" di ...
(parentesi aggiunte solo come indicatori)
- un paio di pesci standard:
[><>][><>]>
- un pesce veloce:
><[>><>]>
- un pesce robusto in un paio di modi:
[><>>]<>>
e><>[><>>]
tuttavia, solo l'abbinamento di un pesce standard e un pesce robusto [><>][><>>]
copre l'intera lunghezza della corda senza caratteri di condivisione del pesce (senza sovrapposizioni). Quindi l'uscita corrispondente a ><>><>>
è ><> ><>>
.
Se la stringa può essere interpretata in diversi modi, è possibile stamparne una qualsiasi. (E solo stampare uno . Di loro), ad esempio, <><<<><
può essere interpretato come un pesce di serie e un pesce robusta: [<><][<<><]
o come un pesce veloce e un pesce di serie: [<><<][<><]
. Quindi uno <>< <<><
o <><< <><
sarebbe un output valido.
I granchi sono solo per divertimento. Dal momento che non iniziano o finiscono con <
o >
, sono molto più facili da identificare (almeno visivamente). Ad esempio, la stringa
,<..>,><<<>,<..>,><>,<..>,<>>><,<..>,><>>,<..>,<<><,<..>,<><,<..>,>><>
produrrebbe ovviamente l'output
,<..>, ><<<> ,<..>, ><> ,<..>, <>>>< ,<..>, ><>> ,<..>, <<>< ,<..>, <>< ,<..>, >><>
Ecco alcuni esempi di stringhe (una per riga) che non producono output:
<><>
,<..>,<..>,
>>><>
><<<<>
,
><><>
,<><>,
<<<><><<<>>><>><>><><><<>>><>><>>><>>><>><>><<><
L'ultima stringa qui può essere analizzata se rimuovi il comando iniziale <
:
<<>< ><<<> >><> ><> ><> <>< <>>>< >><> >><> >><> ><>> <<><
(Potrebbero esserci altre uscite possibili.)
Dettagli
- La stringa di input conterrà solo i caratteri
<>,.
. - La stringa di input sarà lunga almeno un carattere.
- Prendi l'input in modo comune (riga di comando, stdin) e l'output su stdout.
- Vince il codice più breve in byte. ( Handy byte counter. ) Tiebreaker è post precedente.