Вам слід написати програму або функцію, яка надала список блоків тетрису як вихідні виходи або повертає найбільший зазор між двома точками на тому ж рівні висоти, з якими можуть з'єднуватися шматки.
7 типів тетрісу:
Ми будемо позначати ці фрагменти літерами I, J, L, O, S, T і Z відповідно, посилаючись на їх форми. Ви можете обертати шматки, але не можете їх відобразити так, як у грі в тетріс.
Наше завдання - створити з заданих частин ортогонально пов'язану область (сторони, з'єднані з сторонами). Ця область повинна з'єднувати (також ортогонально) два одиничні квадрати, які знаходяться на одній висоті. Ми повинні знайти найбільший можливий проміжок між двома квадратами, які ми можемо подолати.
Детальні приклади
За допомогою шматка L ми можемо з'єднати зазор 3
L
XLLLX
За допомогою шматка S ми можемо з'єднати зазор 2
SS
XSSX
За допомогою шматочків S, S, O ми можемо з'єднати зазор 7 (Зауважте, що ми не можемо з'єднати проміжок 8)
S
XSSOO SSX
SOOSS
Вхідні дані
- Рядок, що представляє наявні фрагменти, що містять лише великі літери I, J, L, O, S, T і Z. Кожна літера являє собою повний шматок тетрісу.
- Букви будуть в алфавітному порядку в рядку.
- Рядок буде мати принаймні один символ.
Вихідні дані
- Єдине додатне ціле число, найбільший проміжок, пов'язаний із заданими фрагментами.
Приклади
Вхід => Вихід
OSS => 7
LS => 5
LZ => 6
ZZZZ => 10
LLSSS => 14
IIJSSSTTZ => 28
IISSSSSS => 24
OOOSSSSSSSSSSSSTT => 45
IJLOSTZ => 21
IJLOSTZZZZZZZ => 37
IIJLLLOSTT => 31
IJJJOOSSSTTZ => 35
Це код-гольф, тому найкоротший запис виграє.