Một trong những trò tiêu khiển toán học yêu thích của tôi là vẽ một lưới hình chữ nhật, sau đó tìm tất cả các hình chữ nhật có thể nhìn thấy trong lưới đó. Ở đây, đưa câu hỏi này, và mạo hiểm cho chính mình!
Bạn có thể đếm số lượng hình chữ nhật?
+-----+-----+-----+-----+
| | | | |
| | | | |
+-----+-----+-----+-----+
| | | | |
| | | | |
+-----+-----+-----+-----+
| | | | |
| | | | |
+-----+-----+-----+-----+
| | | | |
| | | | |
+-----+-----+-----+-----+
Tổng số hình chữ nhật này 4 x 4 bảng minichess là chính xác
100
Bạn đã đúng chưa?
Toán học liên quan: Có bao nhiêu hình chữ nhật trên một bàn cờ 8 × 8?
Các thách thức
Viết hàm / chương trình ngắn nhất đếm tổng số hình chữ nhật có thể nhìn thấy trên lưới / hình ảnh không hình xuyến .
Những thách thức liên quan: Đếm các hình chữ nhật độc đáo! , Tìm số lượng hình chữ nhật trong một mảng byte 2D .
Định dạng đầu vào
Chức năng hoặc chương trình của bạn có thể chọn làm việc với đầu vào dựa trên văn bản hoặc đầu vào đồ họa.
Nhập liệu dựa trên văn bản
Lưới sẽ là một lưới ASCII m -by- n ( m hàng, n cột) bao gồm các ký tự sau:
- không gian,
-
cho các phần của một đoạn đường ngang,|
cho các phần của một đoạn thẳng đứng và+
cho các góc.
Bạn có thể giới thiệu lưới ASCII này làm đầu vào / đối số cho chương trình / hàm của mình dưới dạng
- một chuỗi được giới hạn bởi các ngắt dòng,
- một chuỗi không có dòng mới nhưng với một hoặc hai số nguyên mã hóa kích thước của lưới hoặc
- một mảng các chuỗi.
Lưu ý: Đầu vào dựa trên văn bản chứa ít nhất 1 hàng và ít nhất 1 cột.
Đầu vào đồ họa
Ngoài ra, các lưới được mã hóa dưới dạng hình ảnh PNG đen trắng rộng 5 * n pixel và cao 5 * m pixel. Mỗi hình ảnh bao gồm các khối 5 px * 5 px tương ứng với đầu vào ASCII theo:
- Không gian được chuyển đổi thành các khối màu trắng. Các khối này được gọi là các khối khoảng trắng .
- Các đoạn và góc được chuyển đổi thành các khối không phải khoảng trắng. Pixel trung tâm của các khối như vậy là màu đen.
- Chỉnh sửa: Nếu hai góc (trong đầu vào ASCII) được kết nối bởi một đoạn đường, thì các tâm khối tương ứng (trong đầu vào đồ họa) cũng phải được kết nối bằng một đường màu đen.
Điều này có nghĩa là mỗi khối chỉ có thể được chọn từ (Bấm vào đây để hình ảnh lớn hơn) .
Lưu ý: Các ranh giới màu xanh chỉ dành cho mục đích minh họa. Đầu vào đồ họa rộng tối thiểu 5 px và cao 5 px. Bạn có thể chuyển đổi đầu vào đồ họa thành bất kỳ hình ảnh đơn sắc nào, có khả năng ở các định dạng tệp hình ảnh khác). Nếu bạn chọn chuyển đổi, vui lòng ghi rõ trong câu trả lời. Không có hình phạt để chuyển đổi.
Định dạng đầu ra
Nếu bạn đang viết một chương trình, nó phải hiển thị một số không âm cho biết tổng số hình chữ nhật trong đầu vào.
Nếu bạn đang viết một hàm, nó cũng sẽ trả về một số không âm cho biết tổng số hình chữ nhật trong đầu vào.
Ví dụ trường hợp
Trường hợp 1, Đồ họa: ( 30 px * 30 px), ASCII: ( 6 hàng, 6 cols)
+--+
| |
| ++-+
+-++ |
| |
+--+
Sản lượng dự kiến: 3
Trường hợp 2, Đồ họa: ( 20 px * 20 px), ASCII: ( 4 hàng, 4 cols)
++-+
|+++
+++|
+-++
Sản lượng dự kiến: 6
Trường hợp 3, Đồ họa: ( 55 px * 40 px), ASCII: ( 8 hàng, 11 cols)
+++--+
+-+++ |
| | ++--+
+--+--++ ++
| ||
| ||
++ +--++
++
Sản lượng dự kiến: 9
Trường hợp 4, Đồ họa: ( 120 px * 65 px), ASCII: ( 13 hàng, 24 cols)
+--+--+ +--+ +--+ +--+
| | | | | | | | |
+--+--+ | | | | | |
| | | +--+--+--+--+--+
+--+--+ | | | |
| | | | ++
+-+-+-+-+ +--+ +--+ ++
| | | | |
+-+-+-+-+-+-+-+-+-+-+-+
| | | | | | | | | | | |
+-+-+-+-+-+-+-+-+-+-+-+
| | | | | | | | | | | |
+-+-+-+-+-+-+-+-+-+-+-+
Sản lượng dự kiến: 243
Trường hợp 5, đồ họa: ( 5 px * 5 . Px Vâng, đó là có!), ASCII: Chỉ cần một không gian duy nhất.
Sản lượng dự kiến: 0
Trường hợp 6, Đồ họa: ( 35 px * 20 px), ASCII: ( 4 hàng, 7 cols)
+--+--+
|++|++|
|++|++|
+--+--+
Sản lượng dự kiến: 5
Giả định
Để làm cho cuộc sống dễ dàng hơn, bạn được đảm bảo rằng:
- Bằng cách không hình xuyến , lưới không bao bọc theo chiều ngang hoặc chiều dọc.
- Không có kết thúc lỏng lẻo, ví dụ
+---
hoặc+- -+
. Tất cả các phân khúc dòng có hai đầu. - Hai đường gặp nhau
+
phải giao nhau tại điểm đó. - Bạn không phải lo lắng về đầu vào không hợp lệ.
Quy tắc chống lại sơ hở tiêu chuẩn áp dụng. Hãy coi hình vuông là hình chữ nhật. Tùy chọn, bạn có thể loại bỏ các khoảng trắng ở mỗi hàng của lưới.
Đây là môn đánh gôn , vì vậy hãy làm cho mục nhập của bạn càng ngắn càng tốt. Các giải pháp dựa trên văn bản và đồ họa sẽ cạnh tranh với nhau.