Dovresti scrivere un programma o una funzione che fornisca un elenco di blocchi tetris come uscite di input o restituisca il divario più grande tra due punti nello stesso livello di altezza che i pezzi possono collegare.
I 7 tipi di pezzi di tetris sono i seguenti:
Faremo riferimento a questi pezzi con le lettere I, J, L, O, S, T e Z rispettivamente, facendo riferimento alle loro forme. Puoi ruotare i pezzi ma non puoi specchiarli proprio come in un gioco Tetris.
Il nostro compito è quello di creare un'area collegata ortogonalmente (lati collegati ai lati) dai pezzi dati. Quest'area dovrebbe collegare (anche ortogonalmente) due quadrati di unità che sono alla stessa altezza. Dovremmo trovare il più grande divario possibile tra i due quadrati che possiamo colmare.
Esempi dettagliati
Con il pezzo L possiamo collegare uno spazio di 3
L
XLLLX
Con il pezzo S possiamo collegare uno spazio di 2
SS
XSSX
Con i pezzi S, S, O possiamo collegare uno spazio di 7 (Nota che non possiamo collegare uno spazio di 8)
S
XSSOO SSX
SOOSS
Ingresso
- Una stringa che rappresenta i pezzi disponibili contenenti solo le lettere maiuscole I, J, L, O, S, T e Z. Ogni lettera rappresenta un pezzo tetris completo.
- Le lettere saranno in ordine alfabetico nella stringa.
- La stringa sarà lunga almeno un carattere.
Produzione
- Un singolo numero intero positivo, il più grande gap collegabile con i pezzi dati.
Esempi
Input => Output
OSS => 7
LS => 5
LZ => 6
ZZZZ => 10
LLSSS => 14
IIJSSSTTZ => 28
IISSSSSS => 24
OOOSSSSSSSSSSSSTT => 45
IJLOSTZ => 21
IJLOSTZZZZZZZ => 37
IIJLLLOSTT => 31
IJJJOOSSSTTZ => 35
Questo è code-golf, quindi vince l'ingresso più breve.