Bạn nên viết một chương trình hoặc hàm đưa ra danh sách các khối tetris làm đầu ra đầu vào hoặc trả về khoảng cách lớn nhất giữa hai điểm trong cùng một độ cao mà các mảnh có thể kết nối.
7 loại mảnh tetris như sau:
Chúng tôi sẽ đề cập đến các mảnh này bằng các chữ cái I, J, L, O, S, T và Z tương ứng, đề cập đến hình dạng của chúng. Bạn có thể xoay các mảnh nhưng không thể phản chiếu chúng giống như trong trò chơi Tetris.
Nhiệm vụ của chúng tôi là tạo ra một khu vực được kết nối trực giao (các bên được kết nối với các bên) từ các mảnh nhất định. Khu vực này nên kết nối (cũng trực giao) hai hình vuông đơn vị có cùng chiều cao. Chúng ta nên tìm khoảng cách lớn nhất có thể giữa hai hình vuông mà chúng ta có thể thu hẹp.
Ví dụ chi tiết
Với mảnh L, chúng ta có thể kết nối khoảng cách 3
L
XLLLX
Với mảnh S, chúng ta có thể kết nối khoảng cách là 2
SS
XSSX
Với các mảnh S, S, O, chúng ta có thể kết nối khoảng cách 7 (Lưu ý rằng chúng ta không thể kết nối khoảng cách 8)
S
XSSOO SSX
SOOSS
Đầu vào
- Một chuỗi đại diện cho các mảnh có sẵn chỉ chứa các chữ cái in hoa I, J, L, O, S, T và Z. Mỗi chữ cái đại diện cho một mảnh tetris hoàn chỉnh.
- Các chữ cái sẽ theo thứ tự chữ cái trong chuỗi.
- Chuỗi sẽ dài ít nhất một ký tự.
Đầu ra
- Một số nguyên dương duy nhất, khoảng cách lớn nhất có thể kết nối với các phần đã cho.
Ví dụ
Đầu vào => Đầu ra
OSS => 7
LS => 5
LZ => 6
ZZZZ => 10
LLSSS => 14
IIJSSSTTZ => 28
IISSSSSS => 24
OOOSSSSSSSSSSSSTT => 45
IJLOSTZ => 21
IJLOSTZZZZZZZ => 37
IIJLLLOSTT => 31
IJJJOOSSSTTZ => 35
Đây là môn đánh gôn nên bài dự thi ngắn nhất sẽ thắng.