pengantar
Saya punya kamar yang penuh cermin ajaib . Mereka adalah artefak misterius yang dapat menduplikasi item apa pun, kecuali cermin ajaib lainnya. Secara lebih eksplisit, versi duplikat item akan muncul di sisi lain dari cermin, pada jarak yang sama. Namun, jika ada cermin ajaib lain di jalan di kedua sisi, antara cermin duplikat dan item (asli atau duplikat), duplikat tidak terbentuk. Item asli dapat berupa kiri atau kanan cermin, dan duplikat akan muncul di sisi lain. Juga, item duplikat itu sendiri dapat diduplikasi oleh mirror lain. Item tidak pernah memblokir duplikasi item lain (kecuali dengan langsung pada posisi calon duplikat).
Memasukkan
Input Anda adalah string yang terdiri dari karakter .#|, yang mewakili ruang kosong, item, dan cermin ajaib. Akan selalu ada setidaknya satu cermin ajaib di input.
Keluaran
Output Anda akan menjadi string lain di mana setiap cermin ajaib telah menggandakan setiap item yang bisa, sesuai dengan aturan di atas. Anda dapat mengasumsikan bahwa akan selalu ada ruang kosong di tempat di mana item duplikat muncul (sehingga mereka tidak akan keluar batas).
Contohnya
Pertimbangkan string input
.#.|.....|......#
A B C D
di mana kami telah menandai beberapa posisi untuk kejelasan. Cermin Bduplikat item A, yang berakhir di sebelah kanan:
.#.|.#...|......#
A B C D
Mirror Clalu menggandakan item baru:
.#.|.#...|...#..#
A B C D
Mirror Ctidak dapat menduplikasi item A, karena mirror Bmenghalangi. Itu juga tidak dapat menduplikasi item D, karena mirror Bada di sisi lain. Demikian juga, mirror Btidak dapat menduplikasi item Datau duplikat di sebelahnya, karena mirror Cmenghalangi, jadi ini adalah output yang benar.
Sebagai contoh lain, pertimbangkan inputnya
.##..#...|#..##...|..##....#.
AB C DE FG H IJ K
Cermin Ddapat menggandakan Adan Bke kanan, dan Edan Gke kiri.
Cdan Fsudah merupakan duplikat satu sama lain. Tali itu menjadi
.##.##..#|#..##.##|..##....#.
AB C DE FG H IJ K
Cermin Hdapat menggandakan E,, Fdan duplikat dari Adan Bke kanan, dan Ike kiri.
Gdan Jsudah duplikat satu sama lain, dan mirror Ddi jalan K. Sekarang kita punya
.##.##..#|#..#####|#####..##.
AB C DE FG H IJ K
Akhirnya, mirror Ddapat menggandakan duplikat dari Ike kiri. Kita berakhir dengan
.#####..#|#..#####|#####..##.
AB C DE FG H IJ K
Aturan dan penilaian
Anda dapat menulis program lengkap atau fungsi. Hitungan byte terendah menang. Kiriman yang tidak menggunakan mesin regex bersaing secara terpisah dari yang melakukannya, dan dapat ditandai dengan (tidak ada regex) .
Uji kasus
"|" -> "|"
"..|.." -> "..|.."
".#.|..." -> ".#.|.#."
"..#|.#." -> ".##|##."
".#..|....|.." -> ".#..|..#.|.#"
".|..|.#....." -> "#|#.|.#....."
"...|.#...|....#" -> ".##|##...|...##"
"......#|......." -> "......#|#......"
".#.|.....|......#" -> ".#.|.#...|...#..#"
".......|...#.##|...." -> "##.#...|...#.##|##.#"
"...#..||.......#..#...#" -> "...#..||.......#..#...#"
".##|.#....||#||......#|.#" -> ".##|##....||#||.....##|##"
".##..#...|#..##...|..##....#." -> ".#####..#|#..#####|#####..##."
".#|...||...|#...|..##...|#...." -> ".#|#..||.##|##..|..##..#|#..##"
"....#.|...#.|..|.|.....|..#......" -> "..#.#.|.#.#.|.#|#|#.#..|..#.#...."
"..|....|.....#.|.....|...|.#.|..|.|...#......" -> ".#|#...|...#.#.|.#.#.|.#.|.#.|.#|#|#..#......"