Misi Anda, sebaiknya Anda memilih untuk menerimanya, adalah untuk menambahkan dengan minimum jumlah tanda kurung, kawat gigi, dan kurung untuk membuat string yang diberikan (yang hanya berisi tanda kurung, kawat gigi, dan kurung) memiliki pencocokan penjepit yang benar. Ikatan simbol yang ditambahkan harus diputus dengan memiliki jarak maksimum antara kawat gigi yang dipasangkan. Anda harus mengembalikan hanya satu jawaban yang benar yang cocok dengan kedua aturan ini; Ikatan lebih lanjut, jika ada, dapat diputus sesuai keinginan Anda.
Contoh:
input output
// Empty String is a legal input
[ [] // Boring example
[()] [()] // Do nothing if there's nothing to be done
({{ ({{}}) // NOT (){}{} (0 + 0 + 0). Maximum distance is 4 + 2 + 0, ({{}})
[([{])]} {[([{}])]} // NOT [([])]{[([])]} or similar
Anda dapat menulis sebuah program atau fungsi , menerima input melalui STDIN sebagai argumen string ke fungsi Anda, yang mengembalikan output sebagai string atau mencetaknya ke STDOUT (atau alternatif terdekat). Anda dapat secara opsional memasukkan satu baris baru dalam output.
Anda dapat menganggap bahwa string input hanya terdiri dari 6 karakter berikut (atau ketiadaan): [](){}
(Anda tidak perlu mendukung <>
)
Ini adalah kode-golf , kemenangan program terpendek. Tentu saja celah standar dilarang .
sumber
Jawaban:
Python 2 - 198
Saya berharap untuk mendapatkan beberapa pemahaman lebih sedikit tetapi tidak punya banyak waktu sekarang untuk benar-benar menguji berbagai cara dalam melakukan sesuatu.
OP tidak termasuk contoh suka
{[([{}])]}{[
(dengan grup yang berdekatan), tetapi apakah fungsionalitas ini diperlukan atau tidak, ini menghasilkan yang benar{[([{}])]}{[]}
sumber
\t
) diformat sebagai 4 spasi pada stack overflow tapi saya sebenarnya berganti-ganti tab dan spasi (Anda dapat melakukan ini untuk tingkat lekukan di Python 2, bukan 3) jadi level pertama adalah[space]
kedua adalah[tab]
ketiga adalah[tab][space]
sebagainya adalah[tab][tab]
. Memasukkan kode dengan spasi memberi saya 227 dari sini mothereff.in/byte-counter , dan saya menghitung 10 tab jadi 227 - (3 * 10) = 197. Huh, saya kira saya benar-benar dihitung berlebihan dengan 1 jalan kembali ketika saya diposting ini.return r+[s[f(c)^1]for c in m]
untuk menyimpan byte.Haskell, 513
Fungsinya
h
. Versi sebelumnya tidak memberikan jawaban yang benar untuk"({{)["
dan"({{)}}"
sumber