Deskripsi
Kami menganggap versi Tetris yang sedikit disederhanakan di mana setiap gerakan terdiri dari:
- memutar potongan searah jarum jam, 0 hingga 3 kali
- memposisikan potongan pada kolom yang diberikan
- penurunan cepat
Tujuannya adalah untuk menentukan jumlah garis yang diselesaikan, mengingat daftar gerakan Tetris tersebut.
Baris yang sudah selesai dihapus saat potongan dijatuhkan, mengikuti aturan Tetris standar.
Playfield
Playfield memiliki lebar 10 kolom. Tidak ada Game Over dan diasumsikan bahwa selalu ada cukup ruang dan waktu untuk melakukan tindakan di atas, tidak peduli konfigurasi playfield. Ketinggian playfield tidak terlalu penting di sini, tetapi Anda dapat menggunakan 22 baris standar sebagai batas atas.
Bentuk Tetromino
Input output
Memasukkan
Daftar tetris bergerak dengan koma yang disandikan dengan 3 karakter. Dua karakter pertama menggambarkan bentuk Tetromino yang akan digunakan dan yang terakhir menggambarkan posisi di mana ia dijatuhkan.
- Tetromino:
I
,O
,T
,L
,J
,Z
atauS
, dalam urutan yang sama seperti di atas. - Jumlah rotasi searah jarum jam:
0
ke3
- Kolom:
0
ke9
. Ini adalah kolom di mana sudut kiri atas potongan (ditandai denganx
gambar di atas) terletak setelah rotasi 1
Diasumsikan bahwa semua gerakan dalam daftar yang disediakan valid. Tidak perlu memeriksa entri yang tidak valid seperti I07
( I
bentuk horizontal diletakkan terlalu jauh di sebelah kanan).
1 Anda bebas menerapkan algoritme rotasi nyata atau meng-hardcode semua bentuk yang berbeda, asalkan x
terletak di kolom yang diberikan oleh karakter ketiga gerakan.
Keluaran
Jumlah garis yang diselesaikan.
Contoh
O00,T24
akan menghasilkan posisi pertama dan O00,T24,S02,T01,L00,Z03,O07,L06,I05
akan menghasilkan posisi kedua.
Oleh karena itu, urutan berikut akan menghasilkan Tetris dan harus kembali 4
:
O00,T24,S02,T01,L00,Z03,O07,L06,I05,I19
Uji kasus
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
Halaman uji
Anda dapat menggunakan JSFiddle ini untuk menguji daftar pemindahan.