Anda adalah manajer proyek. Suatu hari, salah satu programmer Anda menjadi gila ( bukan kesalahan Anda ) dan mengambil semua ekspresi dalam basis kode dan menambahkan tanda kurung acak kepada mereka, sebelum berhenti di tempat, mengomel tentang ketidakmampuan Anda ( juga bukan kesalahan Anda ). Ini akan menjadi perbaikan yang mudah, namun, untuk beberapa alasan Anda tidak menggunakan kontrol revisi ( sama sekali bukan kesalahan Anda ). Dan untuk beberapa alasan, tidak ada programmer lain yang ingin melalui setiap ekspresi untuk memperbaiki tanda kurung yang tidak cocok ( omong-omong, itu bukan salah Anda ). Pemrogram hari ini, Anda berpikir untuk diri sendiri. Anda harus melakukannya sendiri. Menyeramkan! Tugas semacam itu seharusnya ada di bawahmu ...
Input akan berupa satu baris, yang akan berisi sejumlah tanda kurung kiri ( ( [ {
) dan tanda kurung kanan ( ) ] }
). Ini juga dapat, tetapi tidak selalu, berisi komentar ( /* */
) dan string literal ( " "
atau ' '
) dan berbagai angka, huruf, atau simbol.
Akan ada setidaknya satu braket (di luar komentar atau string literal) yang tidak memiliki lawan yang berlawanan (di luar komentar atau string literal). Misalnya, bandel }
tanpa pendahuluan {
. Contoh lain: (
yang tidak memiliki )
setelahnya. Program Anda akan menggantikan dengan kurung jumlah kurung minimum yang diperlukan untuk membuat kurung cocok.
Contoh:
(4 + (2 + 3))]
==> (4 + (2 + 3))
(braket persegi di akhir)
][][[]]
==> [][[]]
(braket persegi di awal)
("Hel(o!"))
==> ("Hel(o!")
(tanda kurung di akhir)
( /* )]*/
==> /* )]*/
(tanda kurung di awal)
{()]
==> ()
(braket keriting dan braket persegi)
- Input dapat diambil dari cara mana yang paling nyaman (STDIN, argumen baris perintah, membaca dari file, dll.)
- Jika ada lebih dari satu cara untuk menyelesaikan ketidakcocokan dengan jumlah pemindahan yang sama, keduanya dapat diterima.
- Hanya akan ada ketidakcocokan dalam tanda kurung. Literal string dan komentar akan selalu terbentuk dengan benar.
- Judul berasal dari utas SO ini
- Tidak akan pernah ada kutipan dalam komentar, kutipan dalam kutipan, komentar dalam komentar, atau komentar dalam kutipan.
Ini adalah kode golf, jadi jumlah minimum byte menang. Ajukan pertanyaan dalam komentar jika spesifikasinya tidak jelas.
("foo (\") bar")
)?
{{(})
harus { }
atau setara, karena skenario pembukaan menyiratkan bahwa kode bekerja untuk memulai, dan {(})
dianggap sebagai kurung yang tidak cocok dalam setiap bahasa pemrograman yang saya tahu (yaitu "menyebabkan stasis" ??). Tapi, kemudian, saya sudah menulis jawaban, jadi saya bias.