Berdasarkan pertanyaan INI .
Diberikan string, ganti setiap braket ()[]{}<>
dengan braket dari jenis yang sesuai sehingga kurung cocok, dan siklus kurung bersarang sebagai berikut:
- Yang paling luar adalah
()
- Langsung di dalam
()
seharusnya[]
- Langsung di dalam
[]
seharusnya{}
- Langsung di dalam
{}
seharusnya<>
- Langsung di dalam
<>
akan()
lagi (siklus)
Semua karakter non-braket harus tetap seperti apa adanya. Kurung terbuka hanya dapat diganti dengan kurung terbuka jenis tertentu, dan kurung tutup dengan kurung dekat.
Masukan akan selalu memungkinkan ini. Ini berarti tanda kurungnya cocok dengan benar jika tipenya diabaikan. Jadi, {ab<)c]
adalah input yang valid, tetapi ab)(cd
atau ab((cd
tidak.
Contoh:
2#jd {¤>. = 2#jd (¤).
abcdef = abcdef
(3×5+(4-1)) = (3×5+[4-1])
<<<>><<>><<<<<<>>>>>>> = ([{}][{}][{<([{}])>}])
Penggunaan pengubahan input asli dengan cara ini (sintaksis bahasa secara otomatis) tidak diizinkan.
Seperti biasa: kode terpendek menang.
code-golf
string
balanced-string
Dirk Reichel
sumber
sumber
Jawaban:
JavaScript (ES6), 79 byte
Uji kasus
Tampilkan cuplikan kode
sumber
Lex, 132 byte
sumber
flex
sebagai kompiler) dengan menghapus masing-masing dua atau tiga baris terakhir, dengan biaya sejumlah byte (mungkin 2, 3 atau 4; aturannya agak tidak jelas) dalam penalti untuk-ll
opsi baris perintah saat menautkan file C yang dihasilkan. (Yaitu, alih-alih mengkompilasi denganlex brackets.l; cc lex.yy.c
, Anda mengkompilasi denganlex brackets.l; cc lex.yy.c -ll
.) Itu pasti tradeoff layak dibuat dalam situasi ini.Java, 155 byte
Lambda yang mengambil
char[]
argumen tunggal. Kita memutar melalui array, menyimpan posisinya di string tanda kurung (s
) dalam variabel (k
). Kami memeriksa apakah itu braket pembuka atau penutup (s.indexAt()
), dan menggantinya dengan braket yang sesuai berdasarkan tingkat sarangnya (s.charAt()
), dilingkarkan dengan tepat dengan%4
sumber
Haskell, 126 byte
Cobalah di ideone. Pemakaian:
Penjelasan
f
mengambil tiga argumen: Sebuah string yang berfungsi sebagai tumpukan untuk menutup tanda kurung, sebuah intn
untuk menghitung kedalaman bersarang dan string input.sumber