Buat kode yang mengambil daftar dan angka sebagai input, dan menghasilkan semua kemungkinan kombinasi dengan panjang angka. Misalnya, dengan daftar {0,1} dan angka 2 :
00
01
10
11
Program Anda tidak harus mengharapkan karakter dua kali atau lebih sering dalam daftar, seperti {0,0,0,0,0,1,1,5,5}
Pastikan Anda mencetak kombinasi diurutkan, sesuai urutan daftar:
Dengan daftar {0,1} dan angka 5 (dihasilkan oleh beberapa kode saya, yang terlalu lama untuk dimenangkan):
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111
Tetapi dengan daftar {1,0} dan angka 2 :
11
10
01
00
Seperti yang Anda lihat, daftar terbalik berarti urutan terbalik.
Lihatlah strukturnya, itu seperti pohon.
Ini adalah kode-golf, jadi kode terpendek dalam byte menang!
Jawaban:
Jelly , 1 byte
TryItOnline
Kekuatan bawaan Cartesian atom, sebagai hubungan diad dengan argumen kiri item dan argumen kanan hitungan, atau sebagai program lengkap dengan argumen pertama item dan argumen kedua hitungan.
sumber
Haskell, 20 byte
Contoh penggunaan:
replicate
membuatn
salinan dari parameter ke-2 danmapM id
membuat kombinasi. Btw,mapM id
sama dengansequence
, tetapi 1 byte lebih sedikit.sumber
MATL , 2 byte
Kekuatan kartesius ...
Cobalah online!
sumber
Pyth, 2 byte
Program yang mengambil input dalam bentuk
list,number
dan mencetak daftar daftar.Suite uji
Bagaimana itu bekerja
sumber
Perl 6 , 15 byte
Penjelasan:
sumber
JavaScript (Firefox 30+), 55 byte
Saya 99% rekursi tertentu adalah cara terbaik untuk melakukannya dalam JavaScript.
sumber
Perl, 30 byte
28 byte kode +
-nl
bendera.Untuk menjalankannya:
Saya pikir mengambil input sebagai daftar angka adalah logis untuk Perl. Namun, jika kita mengizinkan fantasi, dan mengambil input dengan tanda kurung dan koma (seperti yang ditunjukkan dalam pertanyaan), kita bisa turun hingga 20 byte :
Penjelasan:
glob
tujuan awal di Perl adalah daftar dan beralih melalui nama file, tetapi ketika argumennya berisi kurung keriting, ia menghasilkan kombinasi yang dibentuk dari satu elemen dari setiap grup braket.-a
autosplit pada spasi input, dan letakkan hasilnya di dalam@F
array.$"
adalah pemisah daftar: pemisah yang disisipkan di antara elemen daftar di dalam string. Kami mengaturnya,
, jadi"{@F"}
menghasilkan{.,.}
(jika@F
berisi 0 dan 1).Kemudian
x
adalah operator pengulangan string (dan<>
mendapat satu baris input).Dan akhirnya,
say for
mengulangi daftar yang dihasilkan olehglob
dan mencetak elemen.sumber
Mathematica, 6 byte
Masih lebih buruk dari Jelly :(
Pemakaian
sumber
Python, 57 byte
repl.it
Fungsi yang tidak disebutkan namanya mengambil daftar objek,
o
dan menghitung,n
dan mengembalikan daftar kombinasi.sumber
Pure Bash, 36
Input oleh params baris perintah - Daftar ini adalah daftar yang dipisahkan koma dalam kurung, misalnya:
Perhatikan daftar input perlu dikutip sehingga shell panggilan tidak memperluasnya terlalu dini.
Ideone .
sumber
bash a.sh "{0,1}" 2
->{0,1}{0,1}
(versi 4.4.5 (1) -release)R ,
5345 byteCobalah online!
rev
ada di sana untuk menyesuaikan dengan urutan sortir yang diminta (yang tidak benar-benar tampak penting untuk masalah) dan menambahkan 5 byte.sumber
rev
untuk 45 byte :)Racket 123 byte
Tidak Disatukan:
Pengujian:
Keluaran:
sumber
PHP, 109 byte
Mengambil panjang sebagai argumen pertama dan daftar sebagai argumen lebih lanjut.
Gunakan seperti:
Akan mengalami kesalahan fatal "kehabisan memori" jika ditanya panjang 0.
sumber
05AB1E ,
21 bytes-1 byte terima kasih @Enigma .
Cobalah online.
Masukkan sebagai
number\nlist
, keluaran sebagai daftar daftar.Penjelasan:
sumber
I
sini.I
karena saya awalnya mencoba mencari cara untuk memiliki beberapa input dan nomor dan daftar dibalik. Sangat bodoh untuk tetap diI
sana .. Terima kasih!