Açıklama
Her hareketin aşağıdakilerden oluştuğu Tetris'in biraz basitleştirilmiş bir versiyonunu düşünüyoruz:
- parçanın saat yönünde, 0 ila 3 kez döndürülmesi
- parçanın belirli bir sütuna yerleştirilmesi
- hızlı düşme
Amaç, bu tür Tetris hareketlerinin bir listesi verilen tamamlanmış satır sayısını belirlemektir.
Tamamlanan satırlar standart Tetris kurallarına uyarak, parçalar düşerken çıkarılır.
Playfield
Oyun alanı 10 sütun genişliğindedir. Hiçbir var Oyun Bitti ve hiç Playfield yapılandırmasını önemli, yukarıdaki eylemleri gerçekleştirmek için her zaman yeterli alan ve zaman var olduğu varsayılır. Oyun alanının yüksekliği burada gerçekten önemli değil, ancak standart 22 satırı bir üst sınır olarak kullanabilirsiniz.
Tetrominoların Şekilleri
Giriş çıkış
Giriş
3 karakter ile kodlanmış Tetris hareketlerinin virgülle ayrılmış listesi. İlk iki karakter kullanılacak Tetromino şeklini ve sonuncusu düşürüldüğü konumu tanımlar.
- Tetromino:
I
,O
,T
,L
,J
,Z
ya daS
yukarıda belirtildiği gibi aynı sırada. - Saat yönü sayısı:
0
için3
- Sütun:
0
için9
. Bu (bir işaretli birim üst sol köşesi içinde sütundurx
yukarıdaki resme) dönme sonrasında bulunan 1
Verilen listedeki tüm hareketlerin geçerli olduğu varsayılmaktadır. Geçersiz girişleri denetlemeye gerek yoktur I07
(yatay I
şekil çok fazla sağa yerleştirilmiş).
1 Hareketin üçüncü karakteri tarafından verilen sütunda yer aldığı sürece ya gerçek bir dönme algoritması uygulamakta ya da tüm farklı şekilleri kodlamakta özgürsünüz x
.
Çıktı
Tamamlanan satır sayısı.
Örnek
O00,T24
birinci pozisyonu O00,T24,S02,T01,L00,Z03,O07,L06,I05
üretecek ve ikinci pozisyonu oluşturacak.
Bu nedenle, aşağıdaki dizi bir Tetris üretecektir ve geri dönmelidir 4
:
O00,T24,S02,T01,L00,Z03,O07,L06,I05,I19
Test durumları
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
Test sayfası
Bir hareket listesini test etmek için bu JSFiddle'ı kullanabilirsiniz .