Tantangan Diambil dari sini dan juga di sini
Sebuah n urutan kurung terdiri dari n (
dan n )
s.
Urutan tanda kurung yang valid didefinisikan sebagai berikut:
Anda dapat menemukan cara untuk menghapus pasangan kurung yang berdekatan "()" hingga menjadi kosong.
Misalnya,
(())
adalah tanda kurung yang valid, Anda dapat menghapus pasangan pada posisi ke-2 dan ke-3 dan menjadi()
, lalu Anda dapat membuatnya kosong.)()(
bukan tanda kurung yang valid, setelah Anda menghapus pasangan pada posisi 2 dan 3, itu menjadi)(
dan Anda tidak dapat menghapus lagi
Tugas
Dengan nomor dan Anda perlu membuat semua urutan kurung yang benar dalam urutan leksikografis
Output dapat berupa array, daftar atau string (dalam hal ini urutan per baris)
Anda dapat menggunakan sepasang yang berbeda dari kurung seperti {}
, []
, ()
atau buka-tutup tanda
Contoh
n = 3
((())) (()()) (())() ()(()) ()()()
n = 2
(()) ()()
sumber
1
s dan-1
s)?Jawaban:
Perl 6 , 36 byte
Cobalah online!
[]
EVAL
[][]
[]
not
!
try
Nil
Penjelasan:
sumber
[][]
adalah potongan Zen dari array kosong yang menghasilkan array itu sendiri. Iris dapat diterapkan beberapa kali, jadi[][][][]...
dievaluasi untuk[]
. Selain itu,[[]]
tidak membangun array bersarang tetapi array kosong karena aturan argumen tunggal (Anda harus menulis[[],]
untuk array bersarang). Jadi setiap urutan[]
kurung yang seimbang menghasilkan array kosong yang boolify menjadi false.R ,
11210799 bytePendekatan non-rekursif. Kami menggunakan "<" dan ">" karena itu menghindari karakter melarikan diri di regex. Untuk memungkinkan kami menggunakan spesifikasi yang lebih pendek untuk rentang ASCII, kami menghasilkan string 3 <2n 2n-karakter "<", "=" dan ">" menggunakan
expand.grid
(melalui kode ASCII mereka 60, 61 dan 62) dan kemudian beralih ke lihat kombinasi mana yang memberikan tanda kurung buka dan tutup seimbang. Kemungkinan "=" akan diabaikan, tentu saja.Via http://rachbelaid.com/recursive-regular-experession/
Cobalah online!
Penjelasan
R , 107 byte
Pendekatan rekursif biasa.
-1 terima kasih @Giuseppe
Cobalah online!
sumber
Map
golf tetapi tidak bisa membungkus kepala saya. Saya tidak yakinparse
+eval
akan bekerja karena()()
dan kesalahan melempar sejenisnya.C (gcc) , 114 byte
Cobalah online!
Harus bekerja untuk n <= 15.
Penjelasan
sumber
Python 2 ,
91888481 byteCobalah online!
-3 byte berkat pizzapants184
sumber
set(...)
dengan seperangkat pemahaman ({...}
) untuk -3 byte Cobalah secara online!05AB1E , 13 byte
Cobalah secara online atau verifikasi beberapa kasus uji lagi .
Penjelasan:
sumber
Ruby , 70 byte
Cobalah online!
sumber
Japt,
1513 byteCobalah
Penjelasan
sumber
K (ngn / k) ,
3635 byteCobalah online!
+!2|&2*x
semua vektor biner dengan panjang 2 * n(x=+/)#
hanya yang berjumlah n(&/-1<+\1-2*)#
hanya mereka yang jumlah parsialnya, yang memperlakukan 0/1 sebagai 1 / -1, tidak negatif"()"
gunakan 0/1 sebagai indeks dalam string inisumber
Perl 5
-n
,4139 byte-2 byte dengan kurung sudut
Cobalah online!
Port jawaban Perl 6 saya.
sumber
Perl 6 , 42 byte
Cobalah online!
Menggunakan regex rekursif. Substitusi alternatif:
S/[\(<~~>\)]*//
38 byte dengan 0 dan 1 sebagai simbol buka / tutup:
Cobalah online!
Penjelasan
sumber
Retina 0.8.2 , 50 byte
Cobalah online! Penggunaan
<>
s. Penjelasan:Konversikan ke unary.
Gandakan hasilnya.
Hitung semua angka biner 2²ⁿ 2n-bit, pemetaan digit
<>
.Simpan hanya urutan yang seimbang. Ini menggunakan trik kurung seimbang yang ditemukan oleh @MartinEnder.
sumber
JavaScript (ES6),
112102 byteIni sangat didasarkan pada jawaban C nwellnhof .
Cobalah online!
sumber
Merah ,
214, 184136 byteCobalah online!
Menggunakan pendekatan Jo King. Temukan semua pengaturan braket yang memungkinkan menggunakan rekursi (mereka dihasilkan dalam urutan leksikografis) dan cetaklah jika pengaturan dievaluasi sebagai blok yang valid.
sumber
Jelly , 19 byte
Cobalah online!
Output diklarifikasi atas TIO.
sumber