La description
Nous considérons une version légèrement simplifiée de Tetris où chaque mouvement consiste en:
- tourner la pièce dans le sens des aiguilles d'une montre, 0 à 3 fois
- positionner la pièce sur une colonne donnée
- chute rapide
Le but est de déterminer le nombre de lignes terminées, à partir d’une liste de ces déplacements de Tetris.
Les lignes terminées sont supprimées au fur et à mesure que les pièces sont déposées, conformément aux règles standard de Tetris.
Playfield
Le terrain de jeu est large de 10 colonnes. Il n'y a pas de Game Over et on suppose qu'il y a toujours assez d'espace et de temps pour effectuer les actions ci-dessus, quelle que soit la configuration du terrain. La hauteur du champ de jeu n’importe pas vraiment ici, mais vous pouvez utiliser les 22 lignes standard comme limite supérieure.
Formes de tetrominoes
Entrée sortie
Contribution
Une liste de mouvements de Tetris séparés par des virgules, codés avec 3 caractères. Les deux premiers caractères décrivent la forme de Tetromino à utiliser et le dernier décrit la position où il est abandonné.
- Tetromino:
I
,O
,T
,L
,J
,Z
ouS
, dans le même ordre que ci - dessus. - Nombre de rotations dans le sens des aiguilles d'une montre:
0
à3
- Colonne:
0
à9
. C'est la colonne dans laquelle se trouve le coin supérieur gauche de la pièce (marqué d'unx
sur l'image ci-dessus) après la rotation 1
Il est supposé que tous les déplacements dans la liste fournie sont valides. Il n'est pas nécessaire de vérifier les entrées non valides telles que I07
( I
forme horizontale trop éloignée à droite).
1 Vous êtes libre d'implémenter un algorithme de rotation réel ou de coder en dur toutes les formes, tant que le x
est situé dans la colonne indiquée par le troisième caractère du déplacement.
Sortie
Nombre de lignes complétées.
Exemple
O00,T24
générera la première position et O00,T24,S02,T01,L00,Z03,O07,L06,I05
générera la deuxième position.
Par conséquent, la séquence suivante générera un Tetris et devrait renvoyer 4
:
O00,T24,S02,T01,L00,Z03,O07,L06,I05,I19
Cas de test
1) "O00,T24,S02,T01,L00,Z03,O07,L06,I05,I19" -> 4
2) "S00,J03,L27,Z16,Z18,I10,T22,I01,I05,O01,L27,O05,S13" -> 5
3) "I01,T30,J18,L15,J37,I01,S15,L07,O03,O03,L00,Z00,T38,T01,S06,L18,L14" -> 4
4) "S14,T00,I13,I06,I05,I19,L20,J26,O07,Z14,Z10,Z12,O01,L27,L04,I03,S07,I01,T25,J23,J27,O01,
I10,I10" -> 8
5) "O00,T24,L32,T16,L04,Z11,O06,L03,I18,J30,L23,Z07,I19,T05,T18,L30,I01,I01,I05,T02" -> 8
Page de test
Vous pouvez utiliser ce JSFiddle pour tester une liste de déplacements.