Vous devez écrire un programme ou une fonction qui a donné une liste de blocs tetris en tant que sorties d'entrée ou renvoie le plus grand écart entre deux points du même niveau de hauteur auquel les pièces peuvent se connecter.
Les 7 types de pièces tetris sont les suivants:
Nous désignerons ces pièces par les lettres I, J, L, O, S, T et Z respectivement, en référence à leurs formes. Vous pouvez faire pivoter les pièces mais ne pouvez pas les refléter comme dans un jeu Tetris.
Notre tâche consiste à créer une zone connectée orthogonalement (côtés connectés aux côtés) à partir des pièces données. Cette zone doit connecter (également orthogonalement) deux carrés d'unité qui sont à la même hauteur. Nous devons trouver le plus grand écart possible entre les deux carrés que nous pouvons combler.
Exemples détaillés
Avec la pièce L, nous pouvons connecter un espace de 3
L
XLLLX
Avec la pièce S, nous pouvons connecter un espace de 2
SS
XSSX
Avec les pièces S, S, O nous pouvons connecter un espace de 7 (Notez que nous ne pouvons pas connecter un espace de 8)
S
XSSOO SSX
SOOSS
Contribution
- Une chaîne représentant les pièces disponibles contenant uniquement les lettres majuscules I, J, L, O, S, T et Z. Chaque lettre représente une pièce tetris complète.
- Les lettres seront dans l'ordre alphabétique dans la chaîne.
- La chaîne comportera au moins un caractère.
Production
- Un seul entier positif, le plus grand espace connectable avec les pièces données.
Exemples
Entrée => Sortie
OSS => 7
LS => 5
LZ => 6
ZZZZ => 10
LLSSS => 14
IIJSSSTTZ => 28
IISSSSSS => 24
OOOSSSSSSSSSSSSTT => 45
IJLOSTZ => 21
IJLOSTZZZZZZZ => 37
IIJLLLOSTT => 31
IJJJOOSSSTTZ => 35
Il s'agit de code-golf, donc l'entrée la plus courte l'emporte.
Réponses:
CJam, 53
Essayez-le en ligne
L'idée est: attribuer à chacune des variables I, J, ..., Z le nombre d'occurrences de cette lettre et calculer
string length * 3 + I - O
. Ensuite, comptez le nombre de S ou Z non compensés: un S peut être compensé par Z, J ou O, et un Z peut être compensé par S, L ou O, et soustrayezceil(that number/3)
, car nous perdons 1 unité pour chaque 3 S ou Z's.la source