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 B
duplikat item A
, yang berakhir di sebelah kanan:
.#.|.#...|......#
A B C D
Mirror C
lalu menggandakan item baru:
.#.|.#...|...#..#
A B C D
Mirror C
tidak dapat menduplikasi item A
, karena mirror B
menghalangi. Itu juga tidak dapat menduplikasi item D
, karena mirror B
ada di sisi lain. Demikian juga, mirror B
tidak dapat menduplikasi item D
atau duplikat di sebelahnya, karena mirror C
menghalangi, jadi ini adalah output yang benar.
Sebagai contoh lain, pertimbangkan inputnya
.##..#...|#..##...|..##....#.
AB C DE FG H IJ K
Cermin D
dapat menggandakan A
dan B
ke kanan, dan E
dan G
ke kiri.
C
dan F
sudah merupakan duplikat satu sama lain. Tali itu menjadi
.##.##..#|#..##.##|..##....#.
AB C DE FG H IJ K
Cermin H
dapat menggandakan E
,, F
dan duplikat dari A
dan B
ke kanan, dan I
ke kiri.
G
dan J
sudah duplikat satu sama lain, dan mirror D
di jalan K
. Sekarang kita punya
.##.##..#|#..#####|#####..##.
AB C DE FG H IJ K
Akhirnya, mirror D
dapat menggandakan duplikat dari I
ke 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
"|" -> "|"
"..|.." -> "..|.."
".#.|..." -> ".#.|.#."
"..#|.#." -> ".##|##."
".#..|....|.." -> ".#..|..#.|.#"
".|..|.#....." -> "#|#.|.#....."
"...|.#...|....#" -> ".##|##...|...##"
"......#|......." -> "......#|#......"
".#.|.....|......#" -> ".#.|.#...|...#..#"
".......|...#.##|...." -> "##.#...|...#.##|##.#"
"...#..||.......#..#...#" -> "...#..||.......#..#...#"
".##|.#....||#||......#|.#" -> ".##|##....||#||.....##|##"
".##..#...|#..##...|..##....#." -> ".#####..#|#..#####|#####..##."
".#|...||...|#...|..##...|#...." -> ".#|#..||.##|##..|..##..#|#..##"
"....#.|...#.|..|.|.....|..#......" -> "..#.#.|.#.#.|.#|#|#.#..|..#.#...."
"..|....|.....#.|.....|...|.#.|..|.|...#......" -> ".#|#...|...#.#.|.#.#.|.#.|.#.|.#|#|#..#......"