บทนำ
ตระกูลแมวน้ำติดอยู่บนภูเขาน้ำแข็งใน Arctic Circle มีเครื่องส่งสัญญาณวิทยุตั้งอยู่บนภูเขาน้ำแข็งซึ่งแมวน้ำสามารถใช้โทรขอความช่วยเหลือได้ อย่างไรก็ตามมีเพียงตราพ่อเท่านั้นที่รู้วิธีใช้งานเครื่องส่งสัญญาณวิทยุ และที่แย่กว่านั้นคือน้ำแข็งลื่นมากในเวลานี้ของปีดังนั้นแมวน้ำจะเลื่อนอย่างไม่สามารถควบคุมได้จนกว่าพวกเขาจะปิดผนึกอีกครั้งหรือเลื่อนออกจากขอบของภูเขาน้ำแข็ง โชคดีที่หนึ่งในแมวน้ำเป็นนักวิทยาศาสตร์คอมพิวเตอร์ดังนั้นเธอจึงตัดสินใจที่จะเขียนโปรแกรมเพื่อหาวิธีที่จะใช้ผนึกพ่อกับเครื่องส่งสัญญาณวิทยุ เนื่องจากมีพื้นที่บนน้ำแข็งไม่มากนักในการเขียนโปรแกรมเธอจึงตัดสินใจที่จะทำให้โปรแกรมใช้ไบต์น้อยที่สุดเท่าที่จะทำได้
ป้อนคำอธิบาย
โปรแกรมของซีลจะรับอินพุตจาก STDIN อาร์กิวเมนต์บรรทัดคำสั่งหรือฟังก์ชั่นอินพุตผู้ใช้ (เช่นraw_input()) ไม่สามารถกำหนดค่าเริ่มต้นล่วงหน้าในตัวแปรได้ (เช่น "โปรแกรมนี้คาดว่าอินพุตจะอยู่ในตัวแปรx")
บรรทัดแรกของอินพุตประกอบด้วยสองจำนวนเต็มคั่นด้วยเครื่องหมายจุลภาคในแบบฟอร์ม
A,B
ต่อไปนี้เป็นBบรรทัดที่ประกอบด้วยAอักขระแต่ละตัว แต่ละบรรทัดสามารถมีอักขระได้ไม่เกินรายการต่อไปนี้:
.: ความเย็นความหนาวเย็นมหาสมุทร แผนที่จะมีสิ่งนี้เป็นเส้นขอบเสมอ#: ส่วนหนึ่งของภูเขาน้ำแข็งa...z: ตราประทับที่ไม่ใช่ตราประทับของพ่อบนภูเขาน้ำแข็งD: พ่อผนึกบนภูเขาน้ำแข็ง*: เครื่องส่งสัญญาณวิทยุ
(โปรดทราบว่าตราประทับของพ่อนั้นจะถูกระบุด้วยตัวพิมพ์ใหญ่Dเสมอตัวพิมพ์เล็กdเป็นเพียงตราประทับปกติ)
คำอธิบายผลลัพธ์
ตามกฎต่อไปนี้เกี่ยวกับวิธีที่ซีลสามารถเคลื่อนย้ายได้ให้ส่งรายการคำแนะนำสำหรับแมวน้ำว่าพวกเขาควรจะเคลื่อนย้ายอย่างไรเพื่อให้ผนึกผนึกพ่อกับเครื่องส่งสัญญาณวิทยุ
- กฎ:แมวน้ำทั้งหมดสามารถเลื่อนขึ้น (
U), ลง (D), ซ้าย (L) และขวา (R) พวกเขาไม่สามารถเลื่อนในแนวทแยงมุม - กฎ:เมื่อเคลื่อนที่แมวน้ำจะเคลื่อนที่ต่อไปในทิศทางเดียวกันจนกระทั่งมันชนกับแมวน้ำอื่นหรือตกลงไปในทะเล
- หากตราประทับชนกับตราประทับอื่นมันจะหยุดเคลื่อนที่ ผนึกที่มันชนเข้ากับจะไม่เคลื่อนที่
- หากแมวน้ำตกลงไปในทะเลมันจะจมลงและหายไปจากแผนที่ นั่นคือมันไม่ได้ทำหน้าที่เป็น collider สำหรับแมวน้ำอื่นและไม่สามารถเคลื่อนย้ายได้อีก
- กฎ:แมวน้ำสองตัวไม่สามารถเคลื่อนที่ได้ในเวลาเดียวกันและไม่สามารถเคลื่อนย้ายแมวน้ำได้ในขณะที่อีกอันหนึ่งยังเคลื่อนไหวอยู่ ตราประทับถัดไปสามารถเคลื่อนย้ายได้เฉพาะเมื่อตราประทับก่อนหน้าหยุดการเคลื่อนที่
- กฎ:ไม่มีข้อ จำกัด เกี่ยวกับการย้ายตราประทับหลายครั้งหรือจำนวนของแมวน้ำที่จมน้ำ
- กฎข้อที่:วิธีการแก้ปัญหาที่ถูกต้องจะมีตราประทับพ่อสิ้นสุดที่เครื่องส่งสัญญาณวิทยุ ตราประทับของพ่อไม่สามารถส่งผ่านตัวส่งสัญญาณได้ในขณะที่เลื่อน
เอาต์พุตจะประกอบด้วยหลายบรรทัดแต่ละบรรทัดในแบบฟอร์ม
A,B
ในกรณีที่Aเป็นตราประทับที่จะย้าย ( Dสำหรับประทับตราพ่อa... zสำหรับคนอื่น ๆ ) และBเป็นทิศทางที่จะย้ายประทับตรา (อย่างใดอย่างหนึ่งU, D, LหรือR) โปรดทราบว่าคุณไม่จำเป็นต้องค้นหาเส้นทางที่สั้นที่สุด เส้นทางที่ได้รับตราพ่อไปยังเป้าหมายคือผลลัพธ์ที่ยอมรับได้
ตัวอย่างอินพุตและเอาต์พุต
การป้อนข้อมูล:
25,5
.........................
.#######################.
.####D#############*k###.
.#######################.
.........................
เอาท์พุท:
D,R
การป้อนข้อมูล:
9,7
.........
.a#####b.
.#####d#.
.##l*###.
.###m#p#.
.#D#.#c#.
.........
เอาท์พุท (เป็นไปได้หนึ่งในหลาย ๆ ):
m,R
b,L
D,U
D,R
D,D
D,L
การป้อนข้อมูล:
26,5
..........................
.###..................###.
.l*##########v#########D#.
.###..................###.
..........................
เอาท์พุท (เป็นไปได้หนึ่งในหลาย ๆ ):
v,D
D,L
หากคุณมีคำถามอื่น ๆ โปรดถามในความคิดเห็น