Tantangan
Tulis fungsi / program yang menampilkan n
elemen 'th, atau n
elemen pertama , dalam urutan angka yang terkenal:
1, 2, 4, 8, 16 ...
Oh, tunggu ... Saya lupa beberapa angka pertama:
1, 1, 1, 1, 2, 4, 8, 16 ...
Heck, saya akan menambahkan beberapa lagi untuk ukuran yang baik:
1, 1, 1, 1, 2, 4, 8, 16, 33, 69, 146, 312, 673, 1463, 3202, 7050, 15605, 34705 ...
Angka-angka tersebut adalah angka Katalan Umum yang diberikan oleh rumus (indeks-nol):
dimana
Ini adalah OEIS A004149 .
Anda dapat memilih apakah Anda ingin urutan nol atau satu diindeks. Urutannya tentu saja harus sama, jadi Anda harus menulis ulang rumus jika Anda memilikinya satu-diindeks.
a(n-1-k)
kea(n-k)
, benar?Jawaban:
Python , 51 byte
Cobalah online!
Sederhanakan formula ini:
sumber
Perl 6 , 44 byte
Cobalah online!
Blok kode anonim yang mengembalikan urutan nilai malas yang tak terbatas. Ini cukup banyak mengimplementasikan urutan seperti yang dijelaskan, dengan cara pintas yang zip itu mengalikan semua elemen sejauh ini setelah elemen kedua dengan kebalikan dari daftar mulai dari elemen keempat dan menambahkan tambahan
1
di akhir.Penjelasan:
sumber
05AB1E ,
141311 byteCobalah online!
Menghasilkan elemen ke-n, diindeks 0.
sumber
JavaScript (ES6), 42 byte
Port solusi xnor .
Diindeks 0.
Cobalah online!
JavaScript (ES6),
8375 byteSolusi yang lebih cepat, kurang rekursif, tetapi jauh lebih lama.
Diindeks 0.
Cobalah online!
sumber
Haskell,
494339 byteCobalah online!
Untuk
n<3
itusum
adalah 0, sehinggamax ... 1
menimbulkan ke1
.Sunting: -6 bytes berkat @ Jo King.
sumber
Bahasa Wolfram (Mathematica) , 36 byte
Cobalah online!
1-diindeks.
2-diindeks urutan 4 byte pendek:
Sum[#0@i#0[#-i],{i,#-4}]/. 0->1&
. Cobalah online!sumber
CatalanNumber
!05AB1E ,
1713 byteTidak lebih pendek dari jawaban 05AB1E yang ada , tetapi saya ingin mencoba fungsi rekursif dari versi 05AB1E yang baru sebagai latihan untuk diri saya sendiri.
Mungkin bisa golf dengan beberapa byte.EDIT: Dan itu memang bisa, melihat versi rekursif dari @Grimy 's 05AB1E jawaban di bawah ini, yang merupakan 13 byte .Output yang pertaman item: Coba online .
Dapat diubah menjadi berbasis 0n item ketika mengganti
£
denganè
: Cobalah online ;atau daftar tanpa batas dengan menghapus
£
: Coba online .Penjelasan:
Ini mengimplementasikan rumus yang digunakan dalam deskripsi tantangan seperti ini:
a ( n ) = a ( n - 1 ) + ∑n - 1k = 2( a ( k ) ⋅ a ( n - 1 - k ) )
Versi 13 byte dari @Grimy (pastikan untuk meningkatkan jawabannya jika Anda belum melakukannya!):
Output yang pertaman item: Coba online.
Lagi-lagi dapat diubah menjadi pengindeksan berbasis-0 atau daftar yang tidak terbatas:a ( 0 ) = 1 secara default.)
- Pengindeksan (berbasis-0)
1λèλ1šÂ¨¨¨øPO
: Coba online ;- Daftar Infinite
λλ1šÂ¨¨¨øPO
: Cobalah online . (Perhatikan bahwa 2 byte disimpan di sini, bukan 1, karena lingkungan rekursif dimulai denganPenjelasan:
Alih-alih ini mengimplementasikan rumus yang ditemukan oleh @xnor untuk jawaban Python-nya seperti ini:
a ( n ) = Σn - 1k = 2( a ( k ) ⋅ a ( n - 2 - k ) )
sumber
n=100
dalam 0,65 detik , tetapi ketika saya menonaktifkan lazy-loading, itu akan habis setelah 60 detik, bahkan untukn=25
.Python 3 , 59 byte
sangat tidak efisien,
a(13)
tidak selesai di TIO.Cobalah online!
sumber
Jelly , 17 byte
Cobalah online!
Tautan monadik yang mengambil indeks-noln dan mengembalikan daftar nomor Katalan umum dari 0 untuk n .
sumber
Haskell , 76 byte
Cobalah online!
sumber
APL (Dyalog Extended) , 34 byte SBCS
-2 Berkat dzaima.
Lambda awalan anonim.
Cobalah online!
sumber
Japt ,
191716 byteMenghasilkan
n
istilah th, 1-diindeks.Cobalah
sumber
Haskell , 65 byte
Cobalah online!
Anda bisa menggunakan salah satu
f
untuk mendapatkan elemen tunggal dari urutan, atau meneruskan daftar nilai keg
dan mendapatkan semua indeks untuk daftar itu.sumber
Keempat (gforth) ,
9981 byteCobalah online!
Output adalah istilah ke-n dan input diindeks 1
Sunting: Disimpan 17 byte dengan beralih ke rumus xnor. Disimpan 1 byte lagi dengan menggunakan 1-diindeks
Penjelasan Kode
sumber
Arang , 26 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Mencetak angka ke-0 yang diindeks, meskipun menghitung menggunakan pengindeksan 1 secara internal. Penjelasan:
Mulai dengan
a[0] = a[1] = a[2] = a[3] = a[4] = 1
. Ya, ini adalah 1-diindeks, tetapi kemudian dengan nilai nol ekstra. Itu kode golf untukmu.Hitung
n
ketentuan tambahan . Ini berlebihan, tetapi itu membuat menemukan istilah yang diinginkan lebih mudah ketikan<5
.Untuk setiap istilah, hitung istilah berikutnya sebagai jumlah dari ketentuan sejauh ini secara bertahap dikalikan dengan kebalikan dari ketentuan sejauh ini, tidak termasuk tiga istilah.
Ini adalah no-op yang digunakan untuk mengelabui Charcoal agar menguraikan bentuk 2-argumen
Slice
, jika tidak saya harus menggunakan cara yang kurang golf untuk menghilangkan tiga istilah.Keluarkan 4 semester terakhir.
sumber
Pyth , 30 byte
Cobalah online!
Mengembalikan yang pertaman elemen urutan.
Alternatif: Gantin elemen ke-urutan, 0-diindeks.
<
dengan@
untuk mengembalikansumber
Ruby ,
4241 byteCobalah online!
1-diindeks (untuk menyimpan 1 byte)
sumber
Oktaf , 73 byte
Cobalah online!
-2 byte terima kasih kepada Stewie Griffin. Sekali lagi, pendekatan imperatif menang atas pendekatan rekursif fungsional. Yang itu ditunjukkan di bawah ini.
Oktaf , 75 byte
Cobalah online!
Captcha ingin memverifikasi saya adalah manusia ketika memposting ini. Sejujurnya, saya tidak begitu yakin .
sumber
n<4
.Perl 5
-MList::Util=sum
, 61 byteCobalah online!
sumber
C / C ++ ,
706967 byte-1 byte, terima kasih kepada Jonathan.
Cobalah online!
sumber
a(n-1-k)
menjadia(n+~k)
?a(++k)*a(n-k)
mungkin berfungsi, dan turun 2 byte lebih lanjut darifor
. Tapi aku mencium perilaku yang tidak jelas.