Kết nối các khoảng trống với các miếng Tetris


14

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:

Gạch Tetris

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.


À, tôi hiểu rồi. Tôi đã nhìn họ như vậy.
Tim

Câu trả lời:


4

Camam, 53

'[,73>qf{1$e=s':+\+~}:+3*I+O-SZ-JO+m0e>ZS-LO+-e>2+3/-

Dùng thử trực tuyến

Ý tưởng là: gán cho mỗi biến I, J, ..., Z là số lần xuất hiện của chữ cái đó và tính toán string length * 3 + I - O. Sau đó đếm số lượng S hoặc Z không được bù: S có thể được bù bằng Z, J hoặc O và Z có thể được bù bằng S, L hoặc O và trừ đi ceil(that number/3), vì chúng ta mất 1 đơn vị cho mỗi 3 S hoặc Của Z

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.