Rozważ te pięć morskich stworzeń ASCII:
- Ryby standardowe:
><>lub<>< - Szybka ryba:
>><>lub<><< - Solidna ryba:
><>>lub<<>< - Ryby rozciągliwe:
><<<>lub<>>>< - Krab:
,<..>,
Napisz program, który akceptuje dowolny ciąg znaków <>,.. Jeśli istnieje sposób na zinterpretowanie całego łańcucha jako serii nienakładających się stworzeń morskich, łańcuch powinien zostać przedrukowany z pojedynczymi spacjami wstawionymi między stworzenia. Jeśli ta interpretacja jest niemożliwa, nic nie powinno być wyprowadzane (program po cichu się kończy).
Na przykład ciąg <><><>może być interpretowany jako dwie standardowe ryby jedna po drugiej. Odpowiednim wyjściem byłoby <>< ><>.
Jako kolejny przykład ciąg ><>><>>zawiera „wystąpienia” ...
(nawiasy dodane tylko jako wskaźniki)
- kilka standardowych ryb:
[><>][><>]> - szybka ryba:
><[>><>]> - solidna ryba na kilka sposobów:
[><>>]<>>i><>[><>>]
jednak tylko parowanie standardowej ryby i mocnej ryby [><>][><>>]obejmuje całą długość sznurka bez znaków dzielących ryby (bez nakładania się). Zatem wyjście odpowiadające ><>><>>jest ><> ><>>.
Jeśli istnieje wiele sposobów interpretacji ciągu, możesz wydrukować dowolny z nich. (I drukować tylko jedną . Z nich) Na przykład, <><<<><może być interpretowany jako standardowy ryb i stabilnej ryb: [<><][<<><]czy jako szybkiego ryb i standardowego ryb: [<><<][<><]. Więc albo <>< <<><czy <><< <><będzie ważne wyjście.
Kraby są po prostu dla zabawy. Ponieważ nie zaczynają się ani nie kończą na <lub >, są o wiele łatwiejsze do zidentyfikowania (przynajmniej wizualnie). Na przykład ciąg
,<..>,><<<>,<..>,><>,<..>,<>>><,<..>,><>>,<..>,<<><,<..>,<><,<..>,>><>
wytworzyłby oczywiście wynik
,<..>, ><<<> ,<..>, ><> ,<..>, <>>>< ,<..>, ><>> ,<..>, <<>< ,<..>, <>< ,<..>, >><>
Oto kilka przykładów ciągów (po jednym w wierszu), które nie generują danych wyjściowych:
<><>
,<..>,<..>,
>>><>
><<<<>
,
><><>
,<><>,
<<<><><<<>>><>><>><><><<>>><>><>>><>>><>><>><<><
Ostatni ciąg tutaj można przeanalizować, jeśli usuniesz wiodące <:
<<>< ><<<> >><> ><> ><> <>< <>>>< >><> >><> >><> ><>> <<><
(Mogą istnieć inne możliwe wyniki.)
Detale
- Łańcuch wejściowy będzie zawierał tylko znaki
<>,.. - Łańcuch wejściowy będzie miał co najmniej jeden znak.
- Pobieraj dane wejściowe w dowolny typowy sposób (linia poleceń, standardowe wejście) i wysyłaj na standardowe wyjście.
- Najkrótszy kod w bajtach wygrywa. ( Handy byte counter. ) Tiebreaker jest wcześniejszym postem.






