Bir caddeye bakıyorsunuz ve birisi çöpleri dışarıda bırakıyor! Çöpü çöp kutularına koyarak sorunun çözülmesine yardımcı olacak bir program yazmanız gerekir.
Görev
Cadde yazdırılabilir ASCII karakter dizisinden oluşur, örneğin:
[[](dust)[]] car ((paper)vomit) (broken(glass)) [[] (rotten) fence (dirty)
Buradaki parantezlerin bazıları eşsiz; bunlar sadece tuzaklardır. Bizim için önemli olan eşleşen parantez setleri.
Bir çöp tenekesi ile başlayan bir dizedir [
ve ile biten ]
ve içten eşleşti parantez ve parantez ile. Örneğin, []
ve[[](dust)[]]
yukarıdaki dize çöp kutuları vardır.
Bir çöp torbası , dahili olarak eşleşen parantez ve parantezlerle başlayan (
ve biten bir dizedir )
. Örneğin (dust)
, yukarıdaki dizede bir çöp torbasıdır.
Çöp torbalarının bazılarının zaten çöp kutularında olması mümkündür. Bununla birlikte, en az biri dışarıda bırakılmış olacak ve çöp torbalarını hepsi çöp kutularının içinde olacak şekilde taşımamız gerekiyor. Özellikle, şu anda bir çöp kutusunun içinde olmayan her çöp torbası için (yani o çöp kutusunun bir alt dizesi), dizedeki mevcut konumundan kaldırmamız ve bunun yerine bir çöp kutusunun içindeki bir yere eklememiz gerekir. .
Burada ek bir kural var. Çöp toplayıcılarına çok fazla para harcamak istemediğimiz ve rotaları onları cadde boyunca sağdan sola götürdüğümüz için, her çöp torbasını sola taşımak istiyoruz (en önemli kriter, onu taşımak zorunda olduğumuzu varsayarsak) tümü) ve mümkün olan en kısa mesafe (sola kaydırıldığı sürece). Örneğin, tek doğru çıktı
[can1](bag)[can2]
dır-dir
[can1(bag)][can2]
(çantayı sadece bir karakter sola hareket ettirerek). Ayrıca, çantaların aynı göreceli sırada kalmaları gerekir:
[can](bag1)(bag2)
olmak zorunda
[can(bag1)(bag2)]
(yani (bag2)
soluna koyamazsınız (bag1)
.)
Açıklamalar
- En soldaki çöp kutusunun solunda çöp torbası olmayacak; tüm çöpleri sola doğru hareket ettirmek her zaman mümkün olacaktır.
- Hareket etmek için her zaman en az bir çanta olacaktır. Birden fazla olabilir.
- Bir çöp torbasının içinde asla bir çöp tenekesi olmayacaktır (kutular atmak için çok değerlidir).
- Bir çanta zaten bir kutunun içindeyse, yalnız bırakın.
- Girdi ve çıktının arka boşlukta (yeni satırlar dahil) farklı olması sorun yaratmaz.
Örnekler:
Giriş:
[[](dust)[]] car ((paper)vomit) (broken(glass)) [[] (rotten) fence (dirty)
Çıktı:
[[](dust)[]((paper)vomit)(broken(glass))] car [[(rotten)(dirty)] fence
Giriş:
[]] (unusable) door (filthy) car
Çıktı :
[(unusable)(filthy)]] door car