Вы должны написать программу или функцию, которая дает список блоков тетриса в качестве входных выходов или возвращает самый большой разрыв между двумя точками на одном и том же уровне высоты, который могут соединять части.
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
Это код-гольф, поэтому выигрывает самый короткий вход.