กำหนดสตริงที่อาจมีกล่องในสลับกล่อง สิ่งนี้จะชัดเจนขึ้นในกรณีทดสอบและคำอธิบาย
อินพุต / เอาต์พุต
รูปแบบอินพุต
อินพุตจะเป็นสตริงเดี่ยวคั่นด้วย CR, LF หรือ CRLF หรือรายการสตริง รูปแบบอินพุตขึ้นอยู่กับคุณที่จะตัดสินใจ
รูปแบบผลลัพธ์
รูปแบบเอาต์พุตต้องอยู่ในรูปแบบเดียวกับอินพุต
คำอธิบาย + ตัวอย่าง
ลองมาดูสตริงบรรจุกล่องเป็นตัวอย่าง:
+-------------+
|Hello, World!|
+-------------+
ในการสลับกล่องเราจะลบแถวแรกและแถวสุดท้ายและคอลัมน์แรกและคอลัมน์สุดท้าย คุณอาจคิดว่าจะไม่มีช่องว่างต่อท้ายหลังบรรทัดสุดท้าย (พร้อมบรรทัดใหม่ที่เป็นตัวเลือกที่ท้ายบรรทัดสุดท้าย) และไม่มีช่องว่างต่อท้ายบนบรรทัดใด ๆ ไม่นับบรรทัดใหม่ของหลักสูตร
นี่จะกลายเป็น:
Hello, World!
วิธีอื่น ๆ
หากสตริงไม่ได้อยู่ในกล่องให้เพิ่มกล่องลงไป มันค่อนข้างง่าย เติม+---...---+
เส้นของตัวเองด้วยk
เครื่องหมายขีดคั่นโดยที่k
ความยาวของบรรทัดที่ยาวที่สุดและจากนั้นสำหรับแต่ละบรรทัดให้วางด้วยช่องว่างต่อท้ายเพื่อจับคู่ความยาวของบรรทัดที่ยาวที่สุดจากนั้นเติมและผนวกอักขระไพพ์ ( "|"
) ในที่สุดผนวกบรรทัดที่มีการ+---...---+
ตั้งค่าเช่นเดียวกับบรรทัดแรก
ตัวอย่างเช่น:
Hello, World!
กลายเป็น:
+-------------+
|Hello, World!|
+-------------+
คุณอาจจะสมมติไม่มีเส้นในการป้อนข้อมูลที่จะมีช่องว่างต่อท้าย
ตัวอย่างของสตริงที่ควรมีกล่องวางไว้รอบ ๆ :
Hello,
World!
กลายเป็น
+----------+
|Hello, |
| World!|
+----------+
ตัวอย่างของสิ่งที่ควรได้รับการบรรจุอยู่:
+--------+
| |
--------+
กลายเป็น:
+----------+
|+--------+|
|| ||
| --------+|
+----------+
กฎ + ข้อมูลจำเพาะ
- ช่องโหว่มาตรฐานใช้
- บรรทัดของอินพุตจะไม่มีช่องว่างนำหน้าหรือต่อท้ายทั้งโดยรวมและในแต่ละบรรทัดโดยไม่คำนึงว่ามีการบรรจุในกล่องหรือไม่
- กล่องจะมี
+
มุมและ|
ขอบแนวตั้งและ-
ด้านแนวนอนเท่านั้น - กล่องจะต้องมีข้อดีในสถานที่ที่จะได้รับการพิจารณาเป็นกล่อง; หากมีความสูงหรือความกว้าง 2 (นั่นคือไม่มีเนื้อหา) ก็ควรจะยังไม่ได้ทำกล่องซึ่งจะส่งผลให้มีการขึ้นบรรทัดใหม่ขึ้นอยู่กับความสูงของกล่อง
- ถ้าอินพุตมีกล่อง แต่มีข้อความด้านนอกของกล่องสิ่งทั้งหมดควรได้รับการบรรจุไว้
- โปรแกรมของคุณจะต้องตรวจสอบขอบเขตทั้งหมดของสตริง ถ้าตัวเดียวพร้อมนอกไม่ถูกต้อง (อย่างใดอย่างหนึ่งที่หายไปหรือตัวละครที่แตกต่างจากสิ่งที่มันควรจะเป็น) แล้วมันควรจะได้รับการบรรจุอยู่ในกล่องไม่ไม่มีกล่อง
+ | -
สตริงไม่มีกล่องตัวเองอาจจะมี ถ้าสตริงที่ไม่มีกล่องตัวเองมีกล่องอยู่รอบ ๆ ให้ส่งคืนสตริงพร้อมกล่อง ควรจะถูก unbox ครั้งเดียวเท่านั้น
คดีขอบ
1: กล่องเล็ก ๆ
การป้อนข้อมูล:
++
++
เอาต์พุตว่างเปล่าหรือขึ้นบรรทัดใหม่
การป้อนข้อมูล:
+----+
+----+
เอาต์พุตว่างหรือขึ้นบรรทัดใหม่
การป้อนข้อมูล:
++
||
||
++
ผลลัพธ์คือ 2 บรรทัดใหม่หรือ 3 บรรทัดใหม่
2: กล่องบางส่วน
การป้อนข้อมูล:
+-------+
| Hello |
+ ------+
เอาท์พุท:
+---------+
|+-------+|
|| Hello ||
|+ ------+|
+---------+
3: ข้อความนอกกรอบ
การป้อนข้อมูล:
+-------+
a| Hello |
+-------+
เอาท์พุท:
+----------+
| +-------+|
|a| Hello ||
| +-------+|
+----------+