"Braket triplet" (yang saya buat untuk tantangan ini) adalah salah satu dari yang berikut:
(...+...)
[...:...]
{...|...}
<...-...>
String braket triplet seimbang (singkatnya BTBS) adalah string kosong, dua BTBS bersambung, atau salah satu dari braket triplet di atas yang masing-masing ...
diganti dengan BTBS.
Tugas Anda adalah menulis program atau fungsi yang memeriksa apakah string yang hanya terdiri dari (+)[:]{|}<->
seimbang. Kode terpendek menang.
Contohnya
Program Anda harus mengembalikan kebenaran untuk string berikut:
(+)(+)(+)
[[[:]:]:(+(+))]{<->|<(+)->[:]}(+)
<<<<<<<<<<<<->->->->->->->->->->->->
{|(+[:<-{|(+[:<->])}>])}
[[[:]:[:]]:[[:]:[:]]]
{[:](+)|<->{|}}[(+)<->:{|}(+)]
Program Anda harus mengembalikan falsy untuk string berikut:
:[
<|>
(+(+)
[:][:](+[[:]):]
{|{|{|(+{|{|{|}}}}}+)}[:]{|}
{{||}}
<<->-<->-<->>
[(+):((+)+)+(+(+))]
<<<<<->->->->->->
code-golf
string
balanced-string
jimmy23013
sumber
sumber
(|)
valid. Saya rasa tidak, tapi saya tidak yakin<|>
pada contoh-contoh palsu.Jawaban:
Japt, 25 byte
Uji secara online!
e
on strings adalah fungsi rekursif-ganti. Parameter kedua default ke string kosong, yang berarti ini secara rekursif menghapus kecocokan dari regex Japt"%(%+%)|%[:]|\{%|}|<->"
(dalam istilah biasa,/\(\+\)|\[:]|{\|}|<->/
). Ini mengembalikan string kosong untuk string triplet seimbang dan string non-kosong untuk non-seimbang, sehingga nilai pengembalian yang benar adalah BUKAN logis dari ini.sumber
JavaScript (ES6),
77585756 byteUji kasus
Tampilkan cuplikan kode
sumber
perl -lpe 's/<->|\(\+\)|{\|}|\[:]//&&redo;$_=!$_'
.0
BTBS. Gunakan 38 ini sebagai gantinya:perl -pe 's/<->|\(\+\)|{\|}|\[:]//&&redo;$_=/^$/'
f=s=>s==(s=s.replace(...))?!s:f(s)
?sed,
2827 bytesed tidak memiliki konsep truthy / falsy, jadi saya mempertimbangkan string kosong truthy dan string non-empty falsy. Ini memeriksa jika kita mempertimbangkan persyaratan
/^$/
.Terima kasih kepada @Neil untuk bermain golf 1 byte!
Cobalah online!
sumber
\]
atau tidak]
cukup?Python, 77 byte
Menggunakan ide pengganti Arnauld . Menghasilkan dan mengevaluasi string panjang seperti
untuk siklus antara mengganti semua jenis braket. Kemudian, periksa apakah hasilnya adalah string kosong.
sumber
Mathematica, 55 byte
Fungsi anonim. Mengambil string sebagai input dan mengembalikan
True
atauFalse
sebagai output. Menggunakan metode standar untuk melakukan ini.sumber
Grime , 39 byte
Cobalah online! Sayangnya, versi TIO kehabisan memori pada sebagian besar kasus uji.
Penjelasan
Tidak ada yang terlalu mewah di sini.
_
adalah singkatan untuk seluruh pola, danv*
sama dengan*
, tetapi dengan prioritas lebih rendah.sumber
J, 48 byte
Mirip dengan yang lain, ini juga didasarkan pada metode Arnauld .
Pemakaian
Penjelasan
sumber
Scala, 96 byte
Ini pada dasarnya ide yang sama dengan jawaban yang lain, tetapi dengan beberapa scala boilerplate.
tanpa mencuri ide dari orang lain (188 byte):
sumber
Pip , 26 byte
Cobalah online!
Loops len (a) kali, menggantikan semua kemunculan kurung triplet kosong (
"(+)[:]{|}<->"<>3
, di mana<>
operator "grup", =>["(+)"; "[:]"; "{|}"; "<->"]
) dengan string kosong (x
). Banyak iterasi ini berlebihan, tetapi akan selalu lebih dari cukup untuk sepenuhnya mengurangi semua kurung triplet yang terbentuk dengan benar menjadi nol. Setelah loop selesai, output!a
:0
jikaa
benar (masih memiliki beberapa karakter),1
jikaa
falsey (kosong).sumber