We consider a slightly simplified version of Tetris where each move consists of:
- rotating the piece clockwise, 0 to 3 times
- positioning the piece at a given column
- fast drop
The goal is to determine the number of completed lines, given a list of such Tetris moves.
Completed rows are removed as pieces are dropped, following standard Tetris rules.
The playfield is 10-column wide. There's no Game Over and it is assumed that there's always enough space and time to perform the above actions, no matter the configuration of the playfield. The height of the playfield doesn't really matter here, but you can use the standard 22 rows as an upper limit.
Shapes of Tetrominoes
Input / Output
A comma separated list of Tetris moves encoded with 3 characters. The first two character describe the Tetromino shape to use and the last one describes the position where it's dropped.
S, in the same order as above.
- Number of clockwise rotations:
9. This is the column in which the top-left corner of the piece (marked with an
xon the above picture) is located after the rotation 1
It is assumed that all moves in the provided list are valid. There's no need to check for invalid entries such as
I shape put too far on the right).
1 You are free to either implement a real rotation algorithm or to hardcode all the different shapes, as long as the
x is located in the column given by the third character of the move.
Number of completed lines.
O00,T24 will generate the first position and
O00,T24,S02,T01,L00,Z03,O07,L06,I05 will generate the second position.
Therefore, the following sequence will generate a Tetris and should return
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
You can use this JSFiddle to test a move list.