Nomor Euler A(n, m)
adalah jumlah permutasi [1, 2, ..., n]
di mana m
elemen persis lebih besar dari elemen sebelumnya. Ini juga disebut naik . Misalnya, jika n = 3
, ada 3! = 6 permutasi dari[1, 2, 3]
1 2 3
< < 2 elements are greater than the previous
1 3 2
< > 1 ...
2 1 3
> < 1 ...
2 3 1
< > 1 ...
3 1 2
> < 1 ...
3 2 1
> > 0 ...
Jadi output untuk A(3, m)
untuk m
di [0, 1, 2, 3]
akan
A(3, 0) = 1
A(3, 1) = 4
A(3, 2) = 1
A(3, 3) = 0
Juga, ini adalah urutan OEIS A173018 .
Aturan
- Ini adalah kode-golf sehingga kode terpendek menang.
- Input
n
akan berupa bilangan bulat negatif danm
akan menjadi bilangan bulat dalam kisaran[0, 1, ..., n]
.
Uji Kasus
n m A(n, m)
0 0 1
1 0 1
1 1 0
2 0 1
2 1 1
2 2 0
3 0 1
3 1 4
3 2 1
3 3 0
4 0 1
4 1 11
4 2 11
4 3 1
4 4 0
5 1 26
7 4 1191
9 5 88234
10 5 1310354
10 7 47840
10 10 0
12 2 478271
15 6 311387598411
17 1 131054
20 16 1026509354985
42 42 0
n, m
?n = 10
.m
jika diinginkan, tetapi saya hanya meminta valid untuk 0 <= m <= n dengan 0 <= n .Jawaban:
Jelly , 8 byte
Cobalah online! (perlu beberapa saat) atau verifikasi kasus uji yang lebih kecil .
Bagaimana itu bekerja
sumber
JavaScript (ES6),
504645 byteBerdasarkan rumus rekursif:
Uji kasus
Tampilkan cuplikan kode
sumber
MATL , 10 byte
Cobalah online!
Penjelasan
Pertimbangkan sebagai contoh masukan
n=3
,m=1
. Anda dapat menempatkan%
simbol untuk mengomentari kode dari titik itu dan seterusnya dan dengan demikian melihat hasil antara. Misalnya, tautan menampilkan tumpukan setelah langkah pertama.sumber
CJam (
2119 byte - atau 18 jika urutan argumen gratis)Ini adalah blok anonim (fungsi) yang mengambil
n m
tumpukan. (Jika diizinkan untuk mengambilm n
tumpukan maka\
dapat disimpan). Itu menghitung semua permutasi dan filter, sehingga rangkaian uji online harus agak terbatas.Terima kasih kepada Martin karena menunjukkan perkiraan
filter-with-parameter
.Pembedahan
Perhatikan bahwa angka Euler adalah simetris:,
E(n, m) = E(n, n-m)
jadi tidak relevan apakah Anda menghitung jatuh atau naik.Secara efisien: 32 byte
Test suite online .
Ini mengimplementasikan pengulangan pada seluruh baris.
sumber
{e!f{2ew::>1b=}1e=}
. Atau hanya untuk bersenang-senang:{e!f{2ew::>+:-}0e=}
1e=
dalam solusi pertama dapat1b
.Python,
5556 byteSemua tes di repl.it
Menerapkan rumus rekursif pada OEIS.
Perhatikan bahwa
+(m+1)*a(n-1,m)
golf untuk-~m*a(n-1,m)
.(Dapat mengembalikan nilai boolean untuk mewakili
1
atau0
. MengembalikanTrue
ketikan<0 and m<=0
ataum<0
.)sumber
m<1 ? 1 : m==n ? 0 : formula
, setaram%n<1 ? (m<1) : formula
; atau sebagai alternatifm<1 ? (n>=0) : formula
.Mathematica,
5956 byteDan di sini adalah versi 59 byte yang mengimplementasikan definisi secara lebih harfiah:
sumber
f[n_,m_]:=...
untuk 49?Sum[Binomial[#+1,k](#2+1-k)^#(-1)^k,{k,0,#2}]&
yang mungkin untuk bermain golf lebihPython, 53 byte
Rekursi dari OEIS. Output Boolean
True
seperti1
saatn==k
.sumber
MATLAB / Oktaf, 40 byte
Ini adalah port jawaban MATL saya, dalam bentuk fungsi anonim. Sebut saja sebagai
ans(7,4)
.Cobalah di Ideone .
sumber
Bahasa GameMaker, 62 byte
Ini adalah skrip rekursif
A
berdasarkan rumus @ Arnauld.sumber
Perl, 98 byte
Berdasarkan properti yang sama dengan jawaban Arnauld.
sumber
R, 72 byte
Fungsi rekursif mengikuti logika pada OEIS.
Tantangan ini ternyata cukup dekat antara berbagai pendekatan yang saya coba. Misalnya, menggunakan rumus wikipedia dan mengulang jumlah menghasilkan 92 byte:
atau versi vektor untuk 87 byte:
dan akhirnya solusi brute force (103 bytes) yang menghasilkan matriks dari semua permutasi dengan menggunakan
permute
paket dan fungsinyaallPerms
. Pendekatan ini hanya bekerja sampain<8
saat ini.sumber
Racket 141 byte
Tidak Disatukan:
Pengujian:
Keluaran:
sumber
Sebenarnya ,
2119 byteJawaban ini menggunakan algoritma yang mirip dengan yang digunakan Dennis dalam jawaban Jelly- nya . Definisi asli penting
<
saat saya hitung>
. Ini akhirnya menjadi setara pada akhirnya. Saran bermain golf diterima. Cobalah online!Tidak melakukanolf
sumber
Cepat 3 , 82
88Bytesfunc A(_ n:Int,_ m:Int)->Int{return m<1 ?1:n>m ?(n-m)*A(n-1,m-1)+(m+1)*A(n-1,m):0}
Formula rekursif yang sama dalam bahasa yang jelas bukan untuk golf
sumber
J, 28 byte
Menggunakan formula
Pemakaian
Penjelasan
sumber