Debe escribir un programa o función que proporcione una lista de bloques de tetris como salidas de entrada o que devuelva el espacio más grande entre dos puntos en el mismo nivel de altura que las piezas pueden conectar.
Los 7 tipos de piezas de tetris son los siguientes:
Nos referiremos a estas piezas por las letras I, J, L, O, S, T y Z respectivamente, en referencia a sus formas. Puedes rotar las piezas pero no puedes reflejarlas como en un juego de Tetris.
Nuestra tarea es crear un área conectada ortogonalmente (lados conectados a lados) a partir de las piezas dadas. Esta área debe conectar (también ortogonalmente) dos unidades cuadradas que están a la misma altura. Deberíamos encontrar la mayor brecha posible entre los dos cuadrados que podamos salvar.
Ejemplos detallados
Con la pieza L podemos conectar un hueco de 3
L
XLLLX
Con la pieza S podemos conectar un hueco de 2
SS
XSSX
Con las piezas S, S, O podemos conectar un espacio de 7 (Tenga en cuenta que no podemos conectar un espacio de 8)
S
XSSOO SSX
SOOSS
Entrada
- Una cadena que representa las piezas disponibles que contienen solo las letras mayúsculas I, J, L, O, S, T y Z. Cada letra representa una pieza de tetris completa.
- Las letras estarán en orden alfabético en la cadena.
- La cadena tendrá al menos un carácter de longitud.
Salida
- Un solo entero positivo, la mayor brecha conectable con las piezas dadas.
Ejemplos
Entrada => Salida
OSS => 7
LS => 5
LZ => 6
ZZZZ => 10
LLSSS => 14
IIJSSSTTZ => 28
IISSSSSS => 24
OOOSSSSSSSSSSSSTT => 45
IJLOSTZ => 21
IJLOSTZZZZZZZ => 37
IIJLLLOSTT => 31
IJJJOOSSSTTZ => 35
Este es el código de golf, por lo que gana la entrada más corta.
Respuestas:
CJam, 53
Pruébalo en línea
La idea es: asignar cada una de las variables I, J, ..., Z para que sea el número de ocurrencias de esa letra, y calcular
string length * 3 + I - O
. Luego cuente el número de S o Z no compensadas: una S puede ser compensada por Z, J u O, y una Z puede ser compensada por S, L u O, y restaceil(that number/3)
, ya que perdemos 1 unidad por cada 3 S o Z's.fuente