ลูกบิดประตูนั้นยอดเยี่ยมและทั้งหมด แต่เมื่อคุณเปิดประตูมันจะบุบผนังโดยรอบ ฉันต้องการให้คุณป้อนข้อมูลศิลปะ ASCII ของห้องเช่นนี้
+---------+--X --X --+-----+
| \ \ |\ | \ |
| \ \ | \ | \|
| X | \ | X
| / | | \ X
| / | \ /
| / | \ / |
+---X --+-------X------+-----+
และเอาท์พุทห้องที่มี doorstops เช่นนี้
+---------+--X --X --+-----+
| \ . \ |\ | \.|
| \ \ | \ .| \|
| X | \ | X
| / | |. \ X
| / .| \ /
|. / | .\ / |
+---X --+-------X------+-----+
รายละเอียด:
- ห้อง ASCII (input) จะประกอบด้วย
+, และ-|ตัวละครเหล่านี้เป็นเครื่องสำอางอย่างหมดจด พวกเขาทั้งหมดอาจเป็น+ของ แต่นั่นจะดูน่ากลัว มันจะมีบานพับ (X) และประตู (/หรือ\) - ประตูที่ทำขึ้นจากหรือ
/\เริ่มต้นจาก "บานพับ" ตัวละครซึ่งก็คือXพวกเขาจะไปในแนวทแยงมุมโดยตรง (เปลี่ยน 1 ในxและ 1 ในy) สำหรับ 2 หรือมากกว่าหน่วย (ตัวอักษร) เมื่อต้องการค้นหาตำแหน่งที่จะใส่ประตูสำหรับประตู (มีเพียงหนึ่ง doorstop ต่อประตูเสมอ) ค้นหาประตูสำหรับประตู ทางเข้าประตูจะเริ่มต้นที่บานพับหนึ่งเสมอและไปที่ช่องว่างเท่ากันตามความยาวของประตูขึ้นลงซ้ายหรือขวาจากตรงนั้น พื้นที่ถัดไปหลังจากนั้นจะเป็นกำแพง ตัวอย่างเช่นในประตูนี้ทางเข้าประตูจะถูกทำเครื่องหมายด้วย
Ds:\ \ ---DDX-----พบประตูหนึ่งพบว่าคุณต้องไปตามเข็มนาฬิกาหรือทวนเข็มนาฬิกาเพื่อไปที่ประตู ตัวอย่างเช่นในประตูตัวอย่างข้างต้นคุณต้องไปตามเข็มนาฬิกาและในประตูนี้คุณต้องไปทวนเข็มนาฬิกา:
\ <- \ ) -----X ---เมื่อคุณรู้วิธีที่จะไปให้ไปทางนั้น (ละเว้นประตู) จนกว่าคุณจะถึงกำแพง
นี่คือการสร้างภาพข้อมูลสำหรับประตูตัวอย่างด้านบน:

สีฟ้าคือทางเข้าประตูสีส้มกำลังพบว่าคุณต้องไปตามเข็มนาฬิกาและสีแดงจะยังคงตามเข็มนาฬิกาจนกว่าจะถึงกำแพง
เมื่อคุณไปถึงกำแพงให้ไปที่ช่องว่าง (ความยาวของประตู) จากบานพับ (
X) บนผนังนั้นให้ขยับหนึ่งช่องว่างห่างจากผนังไปทางประตู.ที่นั่น ต่อไปนี้เป็นประตูตัวอย่างที่แสดงให้เห็นว่าการวางประตูหน้าประตูเป็นอย่างไร:\ \ . ---DDX12---ทำซ้ำทุกประตูและเอาท์พุทผลลัพธ์! ใช้ตัวอย่างอินพุตที่ด้านบนของโพสต์นี้เป็นกรณีทดสอบเพื่อตรวจสอบว่าโปรแกรมของคุณถูกต้องหรือไม่
โปรดทราบว่าคุณไม่จำเป็นต้องจัดการกับประตูที่ไม่พอดีกับผนังเช่น:
| / | / | / | / +-X --หรือ:
/ / / +-X -- | |- นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดเป็นไบต์จะเป็นผู้ชนะ