คุณควรเขียนโปรแกรมหรือฟังก์ชั่นที่รับสตริงเป็นอินพุตและเอาต์พุตหรือส่งคืนหากอินพุตเป็นต้นไม้ ASCII
_
\/ /
\_/
|
|
ต้นไม้ ASCII ประกอบด้วยตัวอักษรและ/ \ | _ spaces
newlines
อักขระที่ไม่ใช่ช่องว่างเชื่อมต่อจุดขอบสองจุดของเซลล์โดยส่วนของเส้น:
/
เชื่อมต่อมุมซ้ายล่างและมุมขวาบน\
เชื่อมต่อมุมขวาล่างและมุมซ้ายบน|
เชื่อมต่อจุดกึ่งกลางของขอบด้านล่างและขอบด้านบน_
เชื่อมต่อมุมซ้ายล่างและมุมขวาล่างและจุดกึ่งกลางของขอบล่าง
(หมายเหตุที่นี้หมายถึงว่า|
สามารถเชื่อมต่อกับ|
หรือ_
แต่ไม่ได้มี/
หรือ\
.)
ภาพ ASCII เรียกว่าต้นไม้ถ้าใช้กฎต่อไปนี้:
- ตรงจุดหนึ่ง (รูท) ของอักขระหนึ่งตัวแตะกับขอบด้านล่างของแถวสุดท้าย
คุณสามารถเข้าถึงจุดใด ๆ ของส่วนของบรรทัดใด ๆ โดย:
- เริ่มต้นจากราก
- ใช้เฉพาะส่วนของเส้น
- ไม่เคยไปในทิศทางที่ลดลง (ไม่แม้แต่ลงด้านข้าง)
อินพุต
- สตริงที่ประกอบด้วยอักขระ
/ \ | _ space
และnewline
มีอักขระที่ไม่ใช่ช่องว่างอย่างน้อยหนึ่งตัว คุณสามารถเลือกรูปแบบการป้อนข้อมูลได้สองแบบ:
- ไม่มีช่องว่างที่ไม่จำเป็นรอบ ๆ ต้นไม้ (ดังที่เห็นในตัวอย่าง)
- ไม่มีช่องว่างที่ไม่จำเป็นรอบ ๆ ต้นไม้ (ดังที่เห็นในตัวอย่าง) ยกเว้นช่องว่างทางด้านขวาของแถวเพื่อทำให้แถวทั้งหมดมีความยาวเท่ากัน
ขึ้นบรรทัดใหม่ต่อท้ายเป็นทางเลือก
เอาท์พุต
ตัวอย่าง
ต้นไม้ที่ถูกต้อง:
|
_
\/ /
\_/
|
|
/ / \/
\ \____/
\/
/
/
\___/
/ \
\___/
|
|
__/
_/
/
____
\ ___
\ \/
\/\_____/
\/ \/
\__/
|
|
ต้นไม้ไม่ถูกต้อง (พร้อมคำอธิบายเพิ่มเติมซึ่งไม่ใช่ส่วนของอินพุต):
\/
\_______/
\__ /
| \_/ <- reachable only on with downward route
|
_ <- multiple roots
\/ <- multiple root characters
/\ <- multiple roots
| <- unreachable part
|
__/
/ <- unreachable parts
|
\____/
| | <- multiple roots
_\__/ <- unreachable parts (_ and \ don't connect to each other)
|
นี่คือรหัส - กอล์ฟเพื่อให้รายการที่สั้นที่สุดชนะ