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.






