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.