Siz bir proje yöneticisisiniz. Bir gün, programcılarınızdan biri deliye döndü (hatanız değil ) ve kod tabanındaki tüm ifadeleri aldı ve yerinde ayrılmadan önce, yetersizliğiniz ( hatta hatanız değil) hakkında rastgele parantezler ekledi . Bununla birlikte, bu kolay bir düzeltme olacaktır, ancak bazı nedenlerden dolayı revizyon kontrolü kullanmıyorsunuz ( tamamen hatanız değil ). Ve bir nedenden ötürü, diğer programcıların hiçbiri eşleşmeyen parantezleri düzeltmek için her ifadeden geçmek istemiyor ( bu arada, bu sizin hatanız değil ). Programcıların bu günlerde, kendinize düşünüyorum. Bunu kendiniz yapmanız gerekecek. Korku! Bu tür görevlerin altınızda olması gerekiyordu ...
Giriş, bir dizi sol parantez ( ( [ {
) ve sağ parantez ( ) ] }
) içeren tek bir satır olacaktır . Ayrıca, her zaman olmasa da, yorumlar ( /* */
) ve dize değişmez değerleri ( " "
veya ' '
) ve çeşitli sayılar, harfler veya simgeler içerebilir .
Karşılıklı bir karşıtlığı olmayan (bir yorumun veya dize değişmezinin dışında) en az bir köşeli ayraç (bir yorumun veya dize değişmezinin dışında) olacaktır. Örneğin, önceliği }
olmayan bir errant {
. Başka bir örnek: daha sonra (
olmayan a )
. Programınız, parantezlerin eşleşmesi için gereken minimum sayıda parantez içeren bir boşlukla değiştirilir.
Örnekler:
(4 + (2 + 3))]
==> (4 + (2 + 3))
(sondaki köşeli ayraç)
][][[]]
==> [][[]]
(başlangıçtaki köşeli ayraç)
("Hel(o!"))
==> ("Hel(o!")
(sondaki parantez)
( /* )]*/
==> /* )]*/
(başlangıçtaki parantez)
{()]
==> ()
(kıvırcık köşeli ayraç ve köşeli ayraç)
- Giriş en uygun yoldan alınabilir (STDIN, komut satırı argümanı, bir dosyadan okuma, vb.)
- Aynı sayıda kaldırma işlemiyle eşleşmeyen sorunu çözmenin birden fazla yolu varsa, her ikisi de kabul edilebilir.
- Parantez içinde yalnızca uyumsuzluklar olacaktır. Dize değişmez değerleri ve yorumlar her zaman doğru şekilde oluşturulur.
- Başlık bu SO iş parçacığından geliyor
- Yorumlarda asla tırnak, tırnak içinde tırnak, yorumlarda yorum veya tırnak içinde yorum olmayacaktır.
Bu kod golf, bu yüzden minimum bayt sayısı kazanır. Spesifikasyon net değilse, yorumlarda soru sorun.
("foo (\") bar")
) İşlemek zorunda mıyız ?
{{(})
olması gerektiğini savunurum. Ama sonra, zaten bir cevap yazdım, bu yüzden önyargılıyım. { }
{(})