Đưa ra một chuỗi có khả năng được đóng hộp, chuyển đổi hộp. Điều này trở nên rõ ràng hơn trong các trường hợp thử nghiệm và giải thích.
Đầu ra đầu vào
Định dạng đầu vào
Đầu vào sẽ là một chuỗi đơn được phân tách bằng CR, LF hoặc CRLF hoặc danh sách các chuỗi. Các định dạng đầu vào là tùy thuộc vào bạn để quyết định.
Định dạng đầu ra
Định dạng đầu ra phải cùng định dạng với đầu vào.
Giải thích + Ví dụ
Hãy lấy một chuỗi được đóng hộp làm ví dụ:
+-------------+
|Hello, World!|
+-------------+
Để chuyển đổi hộp, chúng tôi xóa hàng đầu tiên và cuối cùng và cột đầu tiên và cuối cùng. Bạn có thể giả định rằng sẽ không có khoảng trắng ở cuối dòng cuối cùng (với dòng mới tùy chọn ở cuối dòng cuối cùng) và không có khoảng trắng ở cuối dòng nào, không tính dòng mới tất nhiên.
Điều này sẽ trở thành:
Hello, World!
Cách khác
Nếu chuỗi không nằm trong một hộp, hãy thêm một hộp vào nó. Điều này khá đơn giản; thêm +---...---+
vào dòng riêng của nó bằng k
dấu gạch ngang có k
độ dài của dòng dài nhất và sau đó cho mỗi dòng, đệm nó với khoảng trắng ở cuối để khớp với độ dài của dòng dài nhất, sau đó thêm vào và nối thêm ký tự ống ( "|"
). Cuối cùng, nối một dòng chứa +---...---+
thiết lập tương tự như dòng đầu tiên.
Ví dụ:
Hello, World!
trở thành:
+-------------+
|Hello, World!|
+-------------+
Bạn có thể cho rằng không có dòng nào trong đầu vào sẽ có khoảng trắng ở cuối.
Một ví dụ khác về một chuỗi nên có một hộp đặt xung quanh nó:
Hello,
World!
trở thành
+----------+
|Hello, |
| World!|
+----------+
Một ví dụ về một cái gì đó vẫn nên được đóng hộp:
+--------+
| |
--------+
trở thành:
+----------+
|+--------+|
|| ||
| --------+|
+----------+
Quy tắc + Thông số kỹ thuật
- Áp dụng sơ hở tiêu chuẩn
- Không có dòng đầu vào nào có bất kỳ khoảng trắng đầu hoặc cuối nào cả về tổng thể và trong mỗi dòng, bất kể nó có được đóng hộp hay không
- Các hộp sẽ chỉ có
+
các góc của chúng và|
cho các cạnh dọc và-
cho các cạnh ngang. - Một hộp phải có điểm cộng của nó để được coi là một hộp; nếu nó có chiều cao hoặc chiều rộng 2 (nghĩa là không có nội dung), thì nó vẫn phải được bỏ hộp, điều này sẽ dẫn đến một loạt các dòng mới, tùy thuộc vào chiều cao của hộp.
- Nếu đầu vào có một hộp nhưng văn bản bên ngoài hộp, toàn bộ nên được đóng hộp.
- Chương trình của bạn phải kiểm tra toàn bộ chu vi của chuỗi. Nếu một ký tự dọc bên ngoài không chính xác (thiếu hoặc một ký tự khác với ký tự), thì nó phải được đóng hộp, không được bỏ hộp.
- Chuỗi unboxed chính nó có thể chứa
+ | -
. Nếu chính chuỗi không có hộp có một hộp bao quanh nó, hãy trả lại chuỗi có hộp; nó chỉ nên được mở hộp một lần.
Vỏ cạnh
1: Hộp nhỏ
Đầu vào:
++
++
Đầu ra là trống hoặc một dòng mới
Đầu vào:
+----+
+----+
Đầu ra trống hoặc một dòng mới
Đầu vào:
++
||
||
++
Đầu ra là 2 dòng mới hoặc 3 dòng mới
2: Hộp một phần
Đầu vào:
+-------+
| Hello |
+ ------+
Đầu ra:
+---------+
|+-------+|
|| Hello ||
|+ ------+|
+---------+
3: Văn bản bên ngoài hộp
Đầu vào:
+-------+
a| Hello |
+-------+
Đầu ra:
+----------+
| +-------+|
|a| Hello ||
| +-------+|
+----------+