Giriş
Bu meydan okuma, 2B kalıp eşleştirme dilim olan Grime'dan ilham alıyor . Temel olarak, iki boyutlu karakter ızgaralarını tanımlayan bir "dilbilgisi" verilir ve işiniz dilbilgisine göre bir ızgara oluşturmaktır. Ek olarak, ızgara belirli bir zayıf anlamda mümkün olduğunca küçük olmalıdır.
Giriş
Girişiniz küçük ASCII karakterleri ve sembolleri içeren bir dizedir |ve -. Kolaylık olması açısından, girdi tekrarlanan küçük harfler içermez. Dize, bir dikdörtgen karakter ızgaraları sınıfı için bir belirtimdir ve aşağıdaki gibi bir yığın kullanılarak soldan sağa ayrıştırılır.
- Küçük bir karakter verildiğinde
c, yığına herhangi birm×nkarakterin ızgarasını itin .cm, n ≥ 1 - Bir boru verildiğinde
|, iki ızgarayıAveByığıntan (Büstte) pop ve sağaABbirleştirerek elde edilen ızgarayı itin . Bu gerektirir ve eşit yüksekliğe sahiptir.BAAB - Bir kısa çizgi verildiğinde
-, iki ızgarayıAveByığıntan (Büstte idi) açın ve altınıA/Bbirleştirerek elde edilen ızgarayı itin . Bu gerektirir ve eşit genişliğe sahiptir.BAAB
Bunun için bu garanti bazı seçimler mve n(her bir harfi için farklı olabilir) ayrıştırma işlemi sırasında yapılan, giriş özelliği doğru sonunda yığın üzerinde kalan bir dikdörtgen, tarif etmektedir.
Çıktı
Çıktınız, girdi tarafından belirtilen dikdörtgen bir karakter ızgarasıdır. Izgara, herhangi bir satırı veya sütunu kaldırmanın geçersiz kılması anlamında minimum olmalıdır. En uygun biçim hangisi olursa olsun, satırsonu ile ayrılmış bir dize (sondaki satırsonu olsun veya olmasın), 2B bir karakter dizisi veya bir dize dizisi döndürebilirsiniz.
Girişi tam olarak yukarıda açıklandığı gibi işlemeniz gerekmediğini unutmayın; önemli olan tek şey çıktınızın doğru olmasıdır.
Misal
Şartnameyi düşünün
par-s||e-
Önce bir itmek tercih 1×2ait dikdörtgen pve 1×1bir dikdörtgenler ave r(bu nedeni ilerleyen saatlerde açık olacaktır). Sonra ave rdikdörtgenleri patlatıyoruz ve dikey birleşimlerini itiyoruz
a
r
Ardından, bir 1×2dikdörtgeni itiyoruz s, pop ve yukarıdaki dikdörtgeni patlatıyoruz ve yatay birleştirmelerini
as
rs
Sonra o dikdörtgeni ve pdikdörtgeni patlatıp bir araya getirdik
pas
prs
Son olarak, bir 3×1dikdörtgeni itiyoruz e, pop ve yukarıdaki dikdörtgeni açıyoruz ve dikey birleştirme
pas
prs
eee
Bu, programın çıktısıdır veya olasılıklardan en az biridir. Yine de
ppas
ppas
pprs
eeee
aynı zamanda şartname tarafından üretilir, birçok satır ve sütun kaldırılabileceğinden geçerli bir çıktı değildir.
Daha ince bir örnek olarak,
co|m|p|il|e|r|-
Bu özellik dikdörtgeni oluşturur
comp
iler
ki bu geçerli bir çıktıdır. Ancak, aynı zamanda
commp
iiler
bu da geçerlidir, çünkü hiçbir satır veya sütun geçersiz kılmadan kaldırılamaz.
kurallar
Tam bir program veya işlev verebilirsiniz. En düşük bayt sayısı kazanır ve standart boşluklara izin verilmez.
Ekstra Test Durumları
Bunları programınızı test etmek için kullanabilirsiniz.
Input:
a
Output:
a
Input:
co|mp|l|-ex|i|f|-y|
Example output:
cccoy
mplly
exify
Input:
ja-r|g-o|ni-|ze|d-|
Example output:
jronze
arondd
ggoidd
Input:
un|co|p-yr|i|gh-t-ab|-|le-||-
Example output:
unnnnnnn
coyriggl
ppyrihhe
ppyritte
ppyriabe
nve mdeterminist olarak seçilir. Onlar için uygun değerlerin olması garanti edilir, ancak bunları bulmak programınızın görevidir.
un|co|p-|yr|i|gh--t-ab|-|le-||-geçerli olmak imkansız. Sonuncusu -2'lik bir düzene sahipken, yığın üzerinde sadece 1 öğe var.