Sự miêu tả
Chúng tôi xem xét một phiên bản Tetris hơi đơn giản hóa trong đó mỗi lần di chuyển bao gồm:
- xoay mảnh theo chiều kim đồng hồ, 0 đến 3 lần
- định vị mảnh tại một cột nhất định
- giảm nhanh
Mục tiêu là để xác định số lượng dòng hoàn thành, đưa ra một danh sách các động thái Tetris như vậy.
Các hàng đã hoàn thành được loại bỏ khi các mảnh được thả, theo các quy tắc Tetris tiêu chuẩn.
Sân chơi
Sân chơi rộng 10 cột. Không có Game Over và người ta cho rằng luôn có đủ không gian và thời gian để thực hiện các hành động trên, bất kể cấu hình của sân chơi. Chiều cao của sân chơi không thực sự quan trọng ở đây, nhưng bạn có thể sử dụng 22 hàng tiêu chuẩn làm giới hạn trên.
Hình dạng của Tetrominoes
Đầu ra đầu vào
Đầu vào
Một danh sách các dấu di chuyển Tetris được phân tách bằng dấu phẩy được mã hóa với 3 ký tự. Hai ký tự đầu tiên mô tả hình dạng Tetromino sẽ sử dụng và ký tự cuối cùng mô tả vị trí mà nó bị rơi.
- Tetromino:
I
,O
,T
,L
,J
,Z
hoặcS
, theo thứ tự như trên. - Số vòng quay theo chiều kim đồng hồ:
0
đến3
- Cột:
0
đến9
. Đây là cột trong đó góc trên cùng bên trái của mảnh (được đánh dấu bằng mộtx
hình trên) nằm sau vòng xoay 1
Giả định rằng tất cả các di chuyển trong danh sách được cung cấp là hợp lệ. Không cần kiểm tra các mục không hợp lệ, chẳng hạn như I07
( I
hình ngang đặt quá xa bên phải).
1 Bạn có thể tự do thực hiện thuật toán xoay thực tế hoặc mã hóa tất cả các hình dạng khác nhau, miễn x
là vị trí đó nằm trong cột được cung cấp bởi ký tự thứ ba của di chuyển.
Đầu ra
Số dòng hoàn thành.
Thí dụ
O00,T24
sẽ tạo vị trí đầu tiên và O00,T24,S02,T01,L00,Z03,O07,L06,I05
sẽ tạo vị trí thứ hai.
Do đó, chuỗi sau sẽ tạo Tetris và sẽ trả về 4
:
O00,T24,S02,T01,L00,Z03,O07,L06,I05,I19
Các trường hợp thử nghiệm
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
Trang thử nghiệm
Bạn có thể sử dụng JSFiddle này để kiểm tra danh sách di chuyển.