จะเป็นอย่างไรถ้าเรามีทางเดินที่ประกอบด้วยกระจกสองบานขนานกัน
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
ตอนนี้เราส่องเลเซอร์ลงไป ...
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \|
| /|
| / |
โอ้ดูสิ มันเด้งไปยังจุดสิ้นสุดมี
ถ้าเราวาดเลเซอร์สองตัว แต่ไปในทิศทางตรงกันข้าม
| \ / |
| \ / |
| \/ |
| /\ |
| / \ |
| / \ |
| / \ |
|/ \|
|\ /|
| \ / |
อืมดูเหมือนว่าพวกเขาจะไม่พบกันที่นั่น สะดวกมาก จะเกิดอะไรขึ้นถ้าเลเซอร์ทั้งสองกินพื้นที่เดียวกัน?
| \ / |
| \ / |
| \ / |
| X |
| / \ |
| / \ |
| / \ |
| / \|
|/ /|
|\ / |
ฉันเดาว่ามันค่อนข้างชัดเจนใช่มั้ย
การวาดไดอะแกรมเหล่านี้ด้วยมือนั้นค่อนข้างลำบาก (วางใจในสิ่งนี้) บางทีรหัสบางอย่างสามารถทำได้สำหรับเรา
- เขียนโค้ดบางส่วนเพื่อส่งออกมิเรอร์แบบขนานสองชุดพร้อมด้วยการตีกลับสองครั้ง
- อินพุต (จำนวนเต็มทั้งหมด):
- ความกว้างของทางเดิน
- ความยาวของทางเดิน
- ตำแหน่งเริ่มต้นของเลเซอร์ไปทางขวา (zero-indexed ต้องน้อยกว่าความกว้าง)
- ตำแหน่งเริ่มต้นของเลเซอร์ที่หมุนซ้าย (ศูนย์ที่จัดทำดัชนีจะต้องน้อยกว่าความกว้าง)
- กระบวนการ
- หากเลเซอร์ไปทางขวามันจะถูกดึงหนึ่งช่องว่างไปทางขวาในบรรทัดต่อไปนี้
- หากเลเซอร์ถูกปล่อยออกไปมันจะถูกดึงหนึ่งช่องว่างไปทางซ้ายในบรรทัดต่อไปนี้
- หากเลเซอร์ไม่สามารถก้าวไปข้างหน้าได้มันจะเปลี่ยนทิศทาง แต่ไม่ใช่ตำแหน่ง
- หากเลเซอร์ทั้งสองอยู่ที่ดัชนีเดียวกันให้พิมพ์ตัวพิมพ์ใหญ่ X ที่ดัชนีนั้น
- เอาท์พุต
- สตริงที่มีหลายบรรทัด
- แต่ละบรรทัดเริ่มต้นและลงท้ายด้วยอักขระไพพ์ (|)
- เลเซอร์ที่หมุนไปทางขวาจะถูกแสดงด้วยแบ็กสแลช (\)
- เลเซอร์ไปทางซ้ายจะถูกระบุด้วยเครื่องหมายทับ (/)
- จุดตัดของเลเซอร์สองอันแสดงด้วยตัวพิมพ์ใหญ่ X
- ภาษาใดก็ได้
- ฉันต้องการดูลิงค์ของTIO
- พยายามแก้ไขในจำนวนไบต์ที่น้อยที่สุด
กรณีทดสอบ
ความกว้าง: 6 ความยาว: 10 ไปทางขวา: 1 ไปทางซ้าย: 4
| \ / |
| \/ |
| /\ |
| / \ |
|/ \|
|\ /|
| \ / |
| \/ |
| /\ |
| / \ |
ความกว้าง: 6 ความยาว: 10 ไปทางขวา: 0 ไปทางซ้าย: 1
|\/ |
|/\ |
|\ \ |
| \ \ |
| \ \ |
| \ \|
| \/|
| /\|
| / /|
| / / |
ความกว้าง: 4 ความยาว: 10 ไปทางขวา: 2 ไปทางซ้าย: 0
|/ \ |
|\ \|
| \ /|
| X |
| / \|
|/ /|
|\ / |
| X |
|/ \ |
|\ \|
ความกว้าง: 20 ความยาว: 5 ไปทางขวา: 5 ไปทางซ้าย: 15
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
ความกว้าง: 5 ความยาว: 6 ไปทางขวา: 2 ไปทางซ้าย: 2
| X |
| / \ |
|/ \|
|\ /|
| \ / |
| X |
ความกว้าง: 1 ความยาว: 2 ไปทางขวา: 0 ไปทางซ้าย: 0
|X|
|X|