Saya senang membaca situs ini; ini pertanyaan pertamaku. Suntingan dipersilakan.
Diberikan bilangan bulat positif n dan m , hitung semua partisi m yang diurutkan menjadi persis n bagian bilangan bulat positif, dan cetaklah dipisahkan oleh koma dan baris baru. Urutan apa pun baik-baik saja, tetapi setiap partisi harus muncul tepat sekali.
Misalnya, mengingat m = 6 dan n = 2, partisi yang mungkin adalah pasangan bilangan bulat positif yang berjumlah 6:
1,5
2,4
3,3
4,2
5,1
Perhatikan bahwa [1,5] dan [5,1] adalah partisi dengan urutan berbeda. Output harus persis dalam format di atas, dengan baris tambahan opsional. (EDIT: Urutan partisi tidak penting). Input / output melalui standar kode-golf I / O .
Contoh output lain untuk m = 7, n = 3:
1,1,5
1,2,4
2,1,4
1,3,3
2,2,3
3,1,3
1,4,2
2,3,2
3,2,2
4,1,2
1,5,1
2,4,1
3,3,1
4,2,1
5,1,1
Kode terkecil dalam byte setelah 1 minggu menang.
Sekali lagi, harap edit jika perlu.
Tambahan:
@TimmyD bertanya berapa ukuran input integer yang harus didukung oleh program. Tidak ada minimum keras di luar contoh; memang, ukuran output meningkat secara eksponensial, secara kasar dimodelkan oleh: lines = e ^ (0.6282 n - 1.8273).
n | m | lines of output
2 | 1 | 1
4 | 2 | 2
6 | 3 | 6
8 | 4 | 20
10 | 5 | 70
12 | 6 | 252
14 | 7 | 924
16 | 8 | 3432
18 | 9 | 12870
20 | 10 | 48620
22 | 11 | 184756
24 | 12 | 705432
Jawaban:
Pyth, 14 byte
Cobalah online: Peragaan atau Test Suite
Penjelasan:
sumber
jjL\,fqsTQ^SQE
.Python 3, 77 byte
Fungsi rekursif yang membangun setiap string output dan mencetaknya. Mencoba setiap angka pertama yang mungkin, berulang untuk menemukan solusi dengan jumlah penurunan yang sesuai
n
, dan satu jumlah yang lebih sedikitm
, dan awalan strings
dengan nomor itu. Jika jumlah yang diperlukan dan jumlah istilah sama dengan 0, kami telah mencapai sasaran, jadi kami mencetak hasilnya, memotong koma awal. Ini dicentang sebagaim|n
0 (Falsey).79 karakter dengan Python 2:
sumber
CJam, 22 byte
Cobalah online di penerjemah CJam .
Bagaimana itu bekerja
sumber
Pyth,
2018 byte-2 byte oleh @Dennis!
Ini diambil
n
sebagai input baris pertama, danm
sebagai input kedua.Coba di sini .
sumber
Haskell, 68 byte
Contoh penggunaan:
Cara kerjanya:
sequence $ replicate n list
membuat semua kombinasin
elemen yang ditarik bentuklist
. Kami mengambil semua sepertix
dari[1..m]
manasum
samam
.unlines
daninit$tail$show
menghasilkan format output yang dibutuhkan.sumber
Dyalog APL , 33 byte
Dibawa
m
sebagai argumen kiri,n
sebagai argumen kanan.Hampir setengah (antara
{
dan⍺
) untuk pemformatan yang diperlukan.sumber
Mathematica, 65 byte
IntegerPartitions
melakukan tugas. Sisanya hanya untuk memesan tupel dan memformat hasilnya.sumber
Python 3, 112
Saya belum berhasil 1 liner dalam beberapa saat. :)
sumber
Python 2.7,
174170152 byteJawaban gemuk. Setidaknya itu bisa dibaca :)
sumber
>
, setelahreplace
, dan setelah koma.Julia, 105 byte
Ini adalah fungsi yang membaca dua argumen integer dan menulis hasilnya ke STDOUT dengan satu baris feed trailing.
Tidak Disatukan:
sumber
Perl 6 , 54 byte
Jika outputnya bisa berupa daftar daftar
Cara ini saat ini worded saya harus menambahkan
join
ke dalam lambda.sumber