โปรแกรมเมอร์มักหมกมุ่นอยู่กับการวาดเศษส่วน ฉันคิดว่าเราต้องการสื่อที่ใช้คอมพิวเตอร์เครื่องใหม่
ต้นไม้ Hเป็นชนิดที่ค่อนข้างง่ายของเศษส่วนที่ทำจากเส้นแนวนอนและแนวตั้ง ที่นี่มันอยู่ที่การทำซ้ำสิบ ( มารยาท Wikipedia ):
ตอนนี้ลองนึกภาพแต่ละบรรทัดในรูปภาพเป็นไดเรกทอรี (โฟลเดอร์) ในระบบไฟล์คอมพิวเตอร์มาตรฐาน ทั้งหมดยกเว้นเส้นที่เล็กที่สุดตัดกันสองบรรทัดเล็กกว่าตัวพวกมันเอง สองเส้นเล็ก ๆ เหล่านี้เป็นไดเรกทอรีย่อยของบรรทัดที่ใหญ่กว่า ดังนั้นเส้นแนวนอนขนาดใหญ่ที่อยู่ตรงกลางจึงเป็นไดเรคทอรีหลักของเส้นแนวตั้งที่ใหญ่ที่สุดสองเส้นซึ่งอยู่ในแนวเดียวกันกับพ่อแม่ปู่ย่าตายาย ฯลฯ ของเส้นที่เหลือในภาพ
ท้าทาย
เขียนโปรแกรมที่รับจำนวนเต็มบวก N ผ่าน stdin หรือบรรทัดคำสั่ง (หรือตัวเลือกอื่นที่ใกล้เคียงที่สุด) และสร้างแผนผังไดเร็กทอรีที่สะท้อนการวนซ้ำ Nth ของเศษส่วนต้นไม้ H
การทำซ้ำครั้งแรก (N = 1) เป็นเส้นแนวนอนเดียว ในแต่ละการวนซ้ำที่ตามมาชุดใหม่ของเส้นแนวตั้งหรือแนวนอนจะถูกเพิ่มเข้าไปที่ปลายของบรรทัดปัจจุบัน ดังนั้นสำหรับ N = 2 จะมีการเพิ่มเส้นแนวตั้งสองเส้น (ทำให้เป็นรูปร่าง H) สำหรับ N = 3 สี่เส้นแนวนอนจะถูกเพิ่มเข้าไปในนั้นเป็นต้น
tree
ชื่อของไดเรกทอรีรากจะต้องเสมอ ชื่อของไดเรกทอรีย่อยจะต้องตรงกับทิศทางที่พวกเขาอยู่ในส่วนที่เกี่ยวกับเส้นพ่อแม่ของพวกเขาโดยใช้right
, left
, และup
down
เนื่องจากไดเรกทอรีรูทนั้นเป็นเส้นแนวนอนเสมอจึงจะมีright
และleft
ไดเรกทอรีย่อยอยู่เสมอ แต่ทั้งสองจะมีup
และdown
ไดเรกทอรีย่อยและจะมีright
และleft
อีกครั้งและอื่น ๆ
ไดเรกทอรีในตอนท้ายของการ จำกัด การวนซ้ำควรว่างเปล่า
ตัวอย่าง
สำหรับ N = 3 แผนผังไดเร็กทอรีควรมีลักษณะดังนี้:
tree
right
up
down
left
up
down
ข้อมูลเพิ่มเติม
- ตามหลักแล้ว
tree
ไดเรกทอรีจะปรากฏขึ้นในโฟลเดอร์เดียวกับที่มีซอร์สโค้ดอยู่ แต่ก็ไม่เป็นไรถ้ามันไปยังไดเรกทอรีที่ใช้งานได้ - คุณอาจคิดว่าไม่มี
tree
ไดเรกทอรีที่มีอยู่แล้วในสถานที่ที่คุณจะถูกสร้างขึ้น - คุณอาจสมมติว่าโปรแกรมของคุณจะทำงานบนระบบปฏิบัติการที่ทันสมัยทั่วไป (Mac / Windows / Linux) เสมอ โดยทั่วไปไม่ต้องกังวลกับการใช้ตัวคั่นไฟล์ที่ไม่สามารถใช้งานได้กับทุกระบบปฏิบัติการ
เกณฑ์การให้คะแนน
นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ
tree
จะต้องเป็นleft
และright
แทนที่จะเป็นup
และdown
?