Orada olan bir kaç soru bu sitede parantez dengeleme ve parantez dengeli olup olmadığını kontrol etmeyle ilgili. Şimdi bu dengeli braketleri bir şey için kullanmanın zamanı geldi!
Matematik ve programlamada, parantez kabarcıklar gibidir, içindeki her şeyi dışardan izole etmek, içindeki her şeyi huzur içinde yapabilir ve dışarıdaki her şey yalnızca bir nesneyi görür. Bununla birlikte, bir dizi parantez tek boyutlu iken, kabarcıklar genellikle en az iki boyutludur. Bu, kabarcıkların birbirleriyle asla temas etmediği veya diğer kabarcıkların içi ve dışı arasında geçiş yapmadıkları sürece hareket etmekte özgür oldukları anlamına gelir.
Meydan okuma
Girdi, yuvarlak ()
, kare []
, kıvrımlı {}
veya açılı tek bir tür eşleşen köşeli parantez dizisidir <>
. Programınızın kabul etmesini istediğiniz şey tamamen size bağlıdır ve yalnızca bir tür parantez kabul eden bir program kabul edilir. (Programınız bunlardan herhangi birini idare edebiliyorsa hayali ikramiye, aynı girdideki hepsini idare edebiliyorsa büyük hayali ikramiye puanları alır.) İzleyen boşluklara izin verilse de, giriş parantez arasında hiçbir şey içeremez.
Çıktı, iki ayrı dizge olmaksızın, aynı kabarcık konfigürasyonunu veren bu parantezlerin olası düzenlenmesidir (keyfi sırayla ve orijinal girdi dahil). Bu, bir giriş ile ()()
, ()()
teknik olarak, yer değiştirebilecek iki kabarcık olmasına rağmen , çıktının da adil olduğu anlamına gelir . Büyük hayali ikramiye için, {}[]()
elbette bir irade girdisi , 6 farklı element / string / satır çıktısına yol açar.
Kabarcıkların iki konfigürasyonu "aynı" dır, eğer bir kabarcığı başka bir kabarcığın içinden dışarıya veya dışarıdan içeriye geçmesine izin vermeden kabarcıkları hareket ettirerek diğerinin içine sokabilirsiniz. İç içe parantezleri ağaçlara benzetirseniz (eşleşen her çift bir düğümdür ve içindeki her eşleşen çift bir alt düğümdür ve buradaki her eşleşen çift, bunlardan birinin alt düğümüdür ve burada), belirli bir düğümün alt düğümlerinin sıralandığı Daha sonra, kabarcıkların tek bir konfigürasyonu, düğümlerin sıralanmamış olduğu bir ağaçtır.
Herhangi makul çıkış biçimi için dizeleri listesini veya tek karakter veya boşluk çeşit, tek bir dize listesinin bir listesini dönen ya basmak gibi, yapacak stdout
ya da stderr
görünür boşluk karakteri çeşit ile (en yaygın satır veya boşluk) arasında Her yeniden yapılanma.
Her bir yeniden düzenleme için takip eden boşluklar ve gerçek çıkışa izin verilmeden önce ve sonra yeni satırlar / boş liste öğelerinin sonundaki ve sonundaki takip eden boşluklar. Çıktınızda, girişte kabul ettiğiniz aynı parantezleri kullanmalısınız. Burada belirtildiği gibi parantezler, yeni çizgiler ve boşluklar ve ne tür bir ayırıcı kullanırsanız kullanın, hiçbir şey yazdırılmamalıdır (görünmez / sıfır genişlikli karakterler dahil).
Skor, koddaki bayt sayısıdır; Her dil için en düşük sayı kazanır. Düzenli ya da büyük hayali bir bonus alıp almadığınızı not edebilirsiniz, ancak puanınızı etkilemez. Gerçek bonusları dengelemek için çok zor.
Giriş-çıkış örnekleri
Örnek 1:
Giriş:
()(())
Çıktı:
()(())
(())()
Örnek 2:
Giriş:
(()())()()
Çıktı:
(()())()()
()(()())()
()()(()())
Örnek 3:
Giriş:
(()(()))()
Çıktı:
((())())()
()((())())
(()(()))()
()(()(()))
((()))
örnek 1’e giremiyoruz? ya()()()
? Her giriş için izinleriniz eksik gibi görünüyor.