Powinieneś napisać program lub funkcję, która podaje listę bloków tetris jako dane wyjściowe lub zwraca największą lukę między dwoma punktami na tym samym poziomie wysokości, którą mogą połączyć elementy.
7 rodzajów elementów tetris to:
Do tych elementów będziemy odnosić się odpowiednio literami I, J, L, O, S, T i Z, odnosząc się do ich kształtów. Możesz obracać pionki, ale nie możesz ich odzwierciedlać tak jak w grze Tetris.
Naszym zadaniem jest stworzenie ortogonalnie połączonego obszaru (strony połączone z bokami) z podanych elementów. Obszar ten powinien łączyć (również prostopadle) dwa kwadraty jednostkowe, które są na tej samej wysokości. Powinniśmy znaleźć największą możliwą przerwę między dwoma kwadratami, którą możemy pokonać.
Szczegółowe przykłady
Za pomocą elementu L możemy połączyć odstęp 3
L
XLLLX
Za pomocą elementu S możemy połączyć odstęp 2
SS
XSSX
Za pomocą elementów S, S, O możemy połączyć odstęp 7 (zauważ, że nie możemy połączyć odstępu 8)
S
XSSOO SSX
SOOSS
Wejście
- Ciąg reprezentujący dostępne elementy zawierające tylko wielkie litery I, J, L, O, S, T i Z. Każda litera reprezentuje pełny kawałek tetris.
- Litery będą w kolejności alfabetycznej w ciągu.
- Ciąg będzie miał co najmniej jeden znak.
Wynik
- Pojedyncza dodatnia liczba całkowita, największa luka, którą można połączyć z danymi kawałkami.
Przykłady
Dane wejściowe => Dane wyjściowe
OSS => 7
LS => 5
LZ => 6
ZZZZ => 10
LLSSS => 14
IIJSSSTTZ => 28
IISSSSSS => 24
OOOSSSSSSSSSSSSTT => 45
IJLOSTZ => 21
IJLOSTZZZZZZZ => 37
IIJLLLOSTT => 31
IJJJOOSSSTTZ => 35
To jest golf golfowy, więc wygrywa najkrótszy wpis.