บทนำ
ฉันมีห้องเต็มไปด้วยกระจกวิเศษ พวกเขาเป็นสิ่งประดิษฐ์ลึกลับที่สามารถทำซ้ำรายการใด ๆ ยกเว้นกระจกวิเศษอื่น รายการรุ่นที่ซ้ำกันจะปรากฏที่อีกด้านหนึ่งของมิเรอร์ในระยะทางเดียวกัน อย่างไรก็ตามหากมีกระจกวิเศษอีกอันอยู่ข้างใดข้างหนึ่งระหว่างกระจกที่ทำซ้ำและสิ่งของ (ทั้งแบบดั้งเดิมหรือแบบซ้ำ) จะไม่เกิดการทำซ้ำ รายการต้นฉบับสามารถเป็นไปทางซ้ายหรือทางขวาของกระจกเงาและรายการที่ซ้ำกันจะปรากฏที่อีกด้านหนึ่ง อีกทั้งสามารถทำสำเนารายการที่ซ้ำกันด้วยมิร์เรอร์อื่น รายการไม่เคยบล็อกการทำซ้ำของรายการอื่น ๆ (ยกเว้นโดยการอยู่ในตำแหน่งที่ต้องการซ้ำโดยตรง)
อินพุต
ข้อมูลที่คุณป้อนเป็นสตริงที่ประกอบด้วยอักขระ.#|
ซึ่งแสดงถึงพื้นที่ว่างรายการและกระจกวิเศษ จะมีกระจกวิเศษอย่างน้อยหนึ่งตัวในอินพุต
เอาท์พุต
ผลลัพธ์ของคุณจะเป็นอีกสายหนึ่งที่กระจกวิเศษแต่ละอันจะทำซ้ำทุกรายการที่ทำได้ตามกฎข้างต้น คุณสามารถสันนิษฐานได้ว่าจะมีพื้นที่ว่างเสมอในจุดที่มีรายการที่ซ้ำกันปรากฏขึ้น (ดังนั้นพวกเขาจะไม่ออกนอกขอบเขต)
ตัวอย่าง
พิจารณาสตริงการป้อนข้อมูล
.#.|.....|......#
A B C D
ที่ซึ่งเราได้ทำเครื่องหมายบางตำแหน่งเพื่อความชัดเจน มิเรอร์B
ทำสำเนารายการA
ซึ่งสิ้นสุดไปทางขวา:
.#.|.#...|......#
A B C D
มิร์เรอร์C
ทำซ้ำรายการใหม่:
.#.|.#...|...#..#
A B C D
มิเรอร์C
ไม่สามารถทำซ้ำรายการA
เนื่องจากมิเรอร์B
อยู่ในทาง นอกจากนี้ยังไม่สามารถทำซ้ำรายการD
เนื่องจากมิเรอร์B
อยู่ในอีกด้านหนึ่ง ในทำนองเดียวกันมิเรอร์B
ไม่สามารถทำซ้ำรายการD
หรือทำซ้ำที่อยู่ติดกับมันเนื่องจากมิเรอร์C
อยู่ในทางดังนั้นนี่คือผลลัพธ์ที่ถูกต้อง
สำหรับตัวอย่างอื่นให้พิจารณาอินพุต
.##..#...|#..##...|..##....#.
AB C DE FG H IJ K
มิเรอร์D
สามารถทำซ้ำA
และB
ไปทางขวาE
และG
ไปทางซ้าย
C
และF
ซ้ำซ้อนกันอยู่แล้ว สตริงกลายเป็น
.##.##..#|#..##.##|..##....#.
AB C DE FG H IJ K
กระจกH
สามารถทำซ้ำE
, F
และรายการที่ซ้ำกันของA
และB
ไปทางขวาและI
ไปทางซ้าย
G
และJ
มีการซ้ำซ้อนกันอยู่แล้วและมิเรอร์D
ก็เป็นแบบK
นั้น ตอนนี้เรามี
.##.##..#|#..#####|#####..##.
AB C DE FG H IJ K
ในที่สุดกระจกD
สามารถทำซ้ำสิ่งที่ซ้ำกันI
ทางซ้าย เราจบลงด้วย
.#####..#|#..#####|#####..##.
AB C DE FG H IJ K
กฎและการให้คะแนน
คุณสามารถเขียนโปรแกรมเต็มหรือฟังก์ชั่น จำนวนไบต์ต่ำสุดชนะ ส่งที่ไม่ได้ใช้เครื่องมือ regex แข่งขันแยกต่างหากจากผู้ที่ทำและอาจถูกทำเครื่องหมายด้วย(ไม่ regex)
กรณีทดสอบ
"|" -> "|"
"..|.." -> "..|.."
".#.|..." -> ".#.|.#."
"..#|.#." -> ".##|##."
".#..|....|.." -> ".#..|..#.|.#"
".|..|.#....." -> "#|#.|.#....."
"...|.#...|....#" -> ".##|##...|...##"
"......#|......." -> "......#|#......"
".#.|.....|......#" -> ".#.|.#...|...#..#"
".......|...#.##|...." -> "##.#...|...#.##|##.#"
"...#..||.......#..#...#" -> "...#..||.......#..#...#"
".##|.#....||#||......#|.#" -> ".##|##....||#||.....##|##"
".##..#...|#..##...|..##....#." -> ".#####..#|#..#####|#####..##."
".#|...||...|#...|..##...|#...." -> ".#|#..||.##|##..|..##..#|#..##"
"....#.|...#.|..|.|.....|..#......" -> "..#.#.|.#.#.|.#|#|#.#..|..#.#...."
"..|....|.....#.|.....|...|.#.|..|.|...#......" -> ".#|#...|...#.#.|.#.#.|.#.|.#.|.#|#|#..#......"