Giriş
Sihirli aynalarla dolu bir odam var . Onlar başka bir sihirli ayna dışında herhangi bir öğeyi kopyalayabilen gizemli eserlerdir. Daha açık bir şekilde, öğenin yinelenen bir sürümü aynanın diğer tarafında, aynı mesafede görünecektir. Bununla birlikte, her iki tarafta da, çoğaltma aynası ve her iki öğe arasında (orijinal veya kopya) başka bir sihirli ayna varsa, kopya oluşturulmaz. Orijinal öğe aynanın solunda veya sağında olabilir ve kopya diğer tarafta görünecektir. Ayrıca, yinelenen öğenin kendisi başka bir yansıtmayla çoğaltılabilir. Öğeler başka öğelerin çoğaltılmasını hiçbir zaman engellemez (doğrudan çoğaltılacak konumda olma durumu hariç).
Giriş
Girişiniz, .#|boş alanı, öğeleri ve sihirli aynaları temsil eden karakterlerden oluşan bir dizedir . Girdide her zaman en az bir sihirli ayna olacak.
Çıktı
Çıktınız, yukarıda belirtilen kurallara göre her sihirli aynanın yapabildiği her öğeyi kopyaladığı başka bir dize olacaktır. Yinelenen bir öğenin göründüğü yerde her zaman boş bir alan olacağını varsayabilirsiniz (böylece sınırların dışına çıkmazlar).
Örnekler
Giriş dizesini göz önünde bulundurun
.#.|.....|......#
A B C D
netlik için bazı pozisyonları işaretledik. Ayna , sağa biten Böğeyi çoğaltır A:
.#.|.#...|......#
A B C D
Ayna Cdaha sonra yeni öğeyi çoğaltır:
.#.|.#...|...#..#
A B C D
Ayna Cöğeyi yinelenen olamaz Aayna beri, Bbir şekilde olduğunu. DAynanın Böbür tarafında olduğu için, öğeyi kopyalayamaz . Aynı şekilde, yansıtma işlemi gerçekleştirildiği Biçin yansıtma işlemi öğenin Dveya yanındaki kopyalamayı çoğaltamaz, bu Cnedenle doğru çıktı budur.
Başka bir örnek için girişi düşünün
.##..#...|#..##...|..##....#.
AB C DE FG H IJ K
Ayna Dçoğaltabilirsiniz Ave Bsağa ve Eve Gsola.
Cve Fzaten birbirlerinin kopyası. Dize olur
.##.##..#|#..##.##|..##....#.
AB C DE FG H IJ K
Ayna Hçoğaltabilirsiniz E, Fve tekrarı Ave Bsağında ve Isolunda.
Gve Jzaten birbirinin kopyası, ayna Dise öyle K. Şimdi biz var
.##.##..#|#..#####|#####..##.
AB C DE FG H IJ K
Son olarak, ayna sola Dkopyalarını çoğaltabilir I. Biz sona
.#####..#|#..#####|#####..##.
AB C DE FG H IJ K
Kurallar ve puanlama
Tam bir program veya bir fonksiyon yazabilirsiniz. En düşük bayt sayısı kazanır. Regex motorlarını kullanmayan gönderimler, yapılanlardan ayrı olarak rekabet eder ve ile işaretlenebilir (regex yok) .
Test durumları
"|" -> "|"
"..|.." -> "..|.."
".#.|..." -> ".#.|.#."
"..#|.#." -> ".##|##."
".#..|....|.." -> ".#..|..#.|.#"
".|..|.#....." -> "#|#.|.#....."
"...|.#...|....#" -> ".##|##...|...##"
"......#|......." -> "......#|#......"
".#.|.....|......#" -> ".#.|.#...|...#..#"
".......|...#.##|...." -> "##.#...|...#.##|##.#"
"...#..||.......#..#...#" -> "...#..||.......#..#...#"
".##|.#....||#||......#|.#" -> ".##|##....||#||.....##|##"
".##..#...|#..##...|..##....#." -> ".#####..#|#..#####|#####..##."
".#|...||...|#...|..##...|#...." -> ".#|#..||.##|##..|..##..#|#..##"
"....#.|...#.|..|.|.....|..#......" -> "..#.#.|.#.#.|.#|#|#.#..|..#.#...."
"..|....|.....#.|.....|...|.#.|..|.|...#......" -> ".#|#...|...#.#.|.#.#.|.#.|.#.|.#|#|#..#......"