Tulis kode terpendek Anda dapat memecahkan masalah berikut:
Memasukkan:
Integer X dengan 2 <= X
danX <= 100
Keluaran:
Kombinasi total 2, 3, dan 5 (pengulangan diizinkan, hal-hal penting) yang jumlahnya sama dengan X.
Contoh:
Memasukkan: 8
Output:, 6
karena kombinasi yang valid adalah:
3+5
5+3
2+2+2+2
2+3+3
3+2+3
3+3+2
Memasukkan: 11
Output:, 16
karena kombinasi yang valid adalah
5+3+3
5+2+2+2
3+5+3
3+3+5
3+3+3+2
3+3+2+3
3+2+3+3
3+2+2+2+2
2+5+2+2
2+3+3+3
2+3+2+2+2
2+2+5+2
2+2+3+2+2
2+2+2+5
2+2+2+3+2
2+2+2+2+3
Memasukkan: 100
Keluaran:, 1127972743581281
karena kombinasi yang valid adalah ... banyak
Input dan output dapat berupa bentuk apa pun yang masuk akal. Hitungan byte terendah di setiap bahasa menang. Aturan standar kode-golf berlaku.
sum
di dalamnya bukanlah ide yang baik untuk mencoba menyelesaikan pertanyaan itu ...11
dari12
menjadi16
. Tentu saja merasa bebas untuk memperbaikinya jika saya salah memahami niat AndaJawaban:
Python 2 ,
4645 byteterima kasih kepada xnor untuk -1 byte
Cobalah online!
sumber
and/or
karya dan menghemat byte:f=lambda n:n>0and f(n-2)+f(n-3)+f(n-5)or n==0
.Oasis , 9 byte
Cobalah online!
Penjelasan
sumber
Pyth , 9 byte
Coba di sini!
Pyth , 16 byte
Coba di sini
Bagaimana?
Menghasilkan faktor prima dari 30 , yaitu [2, 3, 5] , mendapat pengulangan diulang N kali, menghilangkan elemen duplikat, menjumlahkan setiap daftar dan menghitung kemunculan N di dalamnya .
Untuk setiap bilangan integer p , ia memeriksa apakah p sama dengan p ∩ primefac (30) . Itu hanya membuat mereka yang memenuhi kondisi ini, dan untuk setiap partisi k yang tersisa , ia mendapat daftar permutasi k , meratakan daftar yang dihasilkan dengan 1 level, mendupuplikasi dan mengambil panjangnya.
sumber
Jelly , 11 byte
Cobalah online!
Bagaimana itu bekerja
sumber
³
dengan mengganti denganH
(maka akan habis pada 12 daripada 6)Perl, 38 byte
Termasuk
+1
untukp
Cukup menarik yang harus saya gunakan
\1
untuk memaksa mundur. Biasanya saya menggunakan^
tetapi pengoptimal regex tampaknya terlalu pintar untuk itu dan memberikan hasil yang terlalu rendah. Saya mungkin harus mulai memberikan nomor versi perl saat menggunakan trik ini karena pengoptimal dapat berubah di setiap versi. Ini diuji padaperl 5.26.1
Ini
49
efisien dan benar-benar dapat menanganiX=100
(tetapi meluapX=1991
)sumber
C, 41 byte
Cobalah online!
sumber
JavaScript (ES6), 32 byte
Algoritma yang sama seperti pada jawaban Python ovs ' .
Uji kasus
Tampilkan cuplikan kode
sumber
R ,
564947 bytePendekatan rekursif dari jawaban ovs . Giuseppe memotong dua byte terakhir untuk membuatnya menjadi 47.
Cobalah online!
sumber
0
(saya tidak mempertimbangkan itu sebelumnya), karena unary juga+
akan memaksanumeric
.MATL , 15 byte
Sangat tidak efisien: memori yang dibutuhkan bersifat eksponensial.
Cobalah online!
Bagaimana itu bekerja
sumber
05AB1E , 10 byte
Cobalah online!
sumber
Ruby , 41 byte
Cobalah online!
Ini adalah solusi rekursif, yang recurcive panggilan makhluk:
[n-5,n-2,n-3].sum(&f)
.sumber
Pari / GP , 36 byte
Cobalah online!
Lebih lama, tetapi lebih efisien:
Pari / GP , 37 byte
Cobalah online!
sumber
Jelly , 21 byte
Cobalah online!
Tentunya bisa golf
sumber
Pyth, 12 byte
Ini sangat tidak efisien dan mencapai batas memori untuk input di atas 5.
Cobalah online
Penjelasan
sumber
Proton , 32 byte
Cobalah online!
Pendekatan yang sama seperti jawaban ovs .
sumber
Bahasa Wolfram (Mathematica) , 43 byte
Cobalah online!
Penjelasan:
FrobeniusSolve
menghitung semua solusi dari jumlah yang tidak berurutan2a + 3b + 5c = n
, lalu mencariMultinomial
tahu berapa banyak cara kita dapat memesan jumlah itu.Atau kita bisa menyalin solusi orang lain untuk jumlah byte yang sama:
sumber
Haskell , 40 byte
Cobalah online!
sumber