Beschreibung
Wir betrachten eine leicht vereinfachte Version von Tetris, bei der jeder Zug aus Folgendem besteht:
- Drehen Sie das Stück im Uhrzeigersinn, 0 bis 3 Mal
- Positionieren Sie das Stück an einer bestimmten Spalte
- schnell fallen
Ziel ist es, anhand einer Liste solcher Tetris-Züge die Anzahl der fertiggestellten Linien zu bestimmen.
Abgeschlossene Reihen werden entfernt, wenn Teile fallengelassen werden, gemäß den Standardregeln von Tetris.
Spielfeld
Das Spielfeld ist 10 Spalten breit. Es gibt kein Spielende und es wird davon ausgegangen, dass immer genügend Platz und Zeit zur Verfügung stehen, um die oben genannten Aktionen auszuführen, unabhängig von der Konfiguration des Spielfelds. Die Höhe des Spielfelds spielt hier keine Rolle, aber Sie können die 22 Standardreihen als Obergrenze verwenden.
Formen von Tetrominoes
Input-Output
Eingang
Eine durch Kommas getrennte Liste von Tetris-Zügen, die mit 3 Zeichen codiert sind. Die ersten beiden Zeichen beschreiben die zu verwendende Tetromino-Form und das letzte beschreibt die Position, an der sie abgelegt wird.
- Tetromino:
I
,O
,T
,L
,J
,Z
oderS
, in der gleichen Reihenfolge wie oben. - Anzahl der Umdrehungen im Uhrzeigersinn:
0
bis3
- Spalte:
0
bis9
. Dies ist die Spalte, in der sich die linke obere Ecke des Stücks (x
im obigen Bild mit einem gekennzeichnet ) nach der Drehung 1 befindet
Es wird davon ausgegangen, dass alle Züge in der angegebenen Liste gültig sind. Es ist nicht erforderlich, nach ungültigen Einträgen wie I07
(horizontale I
Form zu weit rechts) zu suchen.
1 Es steht Ihnen frei, entweder einen echten Rotationsalgorithmus zu implementieren oder alle verschiedenen Formen fest zu codieren, solange x
sich diese in der Spalte befinden, die durch das dritte Zeichen des Zuges angegeben wird.
Ausgabe
Anzahl der ausgefüllten Zeilen.
Beispiel
O00,T24
erzeugt die erste Position und O00,T24,S02,T01,L00,Z03,O07,L06,I05
erzeugt die zweite Position.
Daher generiert die folgende Sequenz ein Tetris und sollte zurückgeben 4
:
O00,T24,S02,T01,L00,Z03,O07,L06,I05,I19
Testfälle
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
Testseite
Mit diesem JSFiddle können Sie eine Verschiebungsliste testen.