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 C
daha sonra yeni öğeyi çoğaltır:
.#.|.#...|...#..#
A B C D
Ayna C
öğeyi yinelenen olamaz A
ayna beri, B
bir şekilde olduğunu. D
Aynanın B
öbür tarafında olduğu için, öğeyi kopyalayamaz . Aynı şekilde, yansıtma işlemi gerçekleştirildiği B
için yansıtma işlemi öğenin D
veya yanındaki kopyalamayı çoğaltamaz, bu C
nedenle 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 A
ve B
sağa ve E
ve G
sola.
C
ve F
zaten birbirlerinin kopyası. Dize olur
.##.##..#|#..##.##|..##....#.
AB C DE FG H IJ K
Ayna H
çoğaltabilirsiniz E
, F
ve tekrarı A
ve B
sağında ve I
solunda.
G
ve J
zaten birbirinin kopyası, ayna D
ise öyle K
. Şimdi biz var
.##.##..#|#..#####|#####..##.
AB C DE FG H IJ K
Son olarak, ayna sola D
kopyaları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ı
"|" -> "|"
"..|.." -> "..|.."
".#.|..." -> ".#.|.#."
"..#|.#." -> ".##|##."
".#..|....|.." -> ".#..|..#.|.#"
".|..|.#....." -> "#|#.|.#....."
"...|.#...|....#" -> ".##|##...|...##"
"......#|......." -> "......#|#......"
".#.|.....|......#" -> ".#.|.#...|...#..#"
".......|...#.##|...." -> "##.#...|...#.##|##.#"
"...#..||.......#..#...#" -> "...#..||.......#..#...#"
".##|.#....||#||......#|.#" -> ".##|##....||#||.....##|##"
".##..#...|#..##...|..##....#." -> ".#####..#|#..#####|#####..##."
".#|...||...|#...|..##...|#...." -> ".#|#..||.##|##..|..##..#|#..##"
"....#.|...#.|..|.|.....|..#......" -> "..#.#.|.#.#.|.#|#|#.#..|..#.#...."
"..|....|.....#.|.....|...|.#.|..|.|...#......" -> ".#|#...|...#.#.|.#.#.|.#.|.#.|.#|#|#..#......"