Diberikan satu set n
elemen, tantangannya adalah menulis fungsi yang mencantumkan semua kombinasi k
elemen dalam set ini.
Contoh
Set: [1, 7, 4]
Input: 2
Output: [1,7], [1,4], [7,4]
Contoh
Set: ["Charlie", "Alice", "Daniel", "Bob"]
Input: 2
Output ["Daniel", "Bob"], ["Charlie", "Alice"], ["Alice", "Daniel"], ["Charlie", "Daniel"], ["Alice", "Bob"], ["Charlie", "Bob"]
Aturan (Diedit)
- Urutan output adalah pilihan Anda.
- Input dapat berupa semua jenis data. Tetapi output harus jenis yang sama dengan input. Jika input adalah daftar bilangan bulat, output juga harus berupa daftar bilangan bulat. Jika input adalah string (array karakter), output juga harus berupa string.
- Kode harus bekerja dengan sejumlah variabel input.
- Anda dapat menggunakan bahasa pemrograman apa pun.
- Jawabannya harus bisa menggunakan apa saja (string, int, double ...) sebagai input dan output juga.
- Fungsi bawaan apa pun yang terkait dengan kombinasi dan permutasi dilarang.
- Kemenangan kode terpendek (dalam hal byte).
- Tiebreaker: suara.
- Durasi: 1 minggu.
PS Hati-hati dengan input ekstrim seperti angka negatif, 0, dll.
combos('ab', 1) -> ['a', 'b']
valid?Jawaban:
Haskell -
5746 byteBawa, penulis naskah golf.
Use case (fungsi yang sama berfungsi secara polimorfis):
sumber
Python (72)
Fungsi
f
mengambil daftarS
dan nomork
dan mengembalikan daftar semua sublists panjangk
dariS
. Daripada mendaftar semua subset dan kemudian memfilter menurut ukuran, saya hanya mendapatkan subset dari ukuran yang dibutuhkan pada setiap langkah.Saya ingin mulai
S.pop()
bekerja agar bisa bergaulS[:1]
dengan orangS[1:]
lain, tetapi sepertinya terlalu banyak mengkonsumsi daftarnya.Untuk mencegah keberatan solusi Python seperti itu melanggar aturan bahwa "Kode harus bekerja di sejumlah variabel input" karena batas rekursi, saya akan perhatikan bahwa implementasi Stackless Python tidak memiliki batas rekursi (meskipun saya belum benar-benar menguji kode ini dengan itu).
Demonstrasi:
sumber
Mathematica 10, 70 karakter
Hanya terjemahan dari jawaban Haskell.
Pemakaian:
sumber
Arang , 23 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
Python - 129
s adalah daftar, k adalah ukuran kombinasi yang akan dihasilkan.
sumber
Python, 102
Panggil c untuk menjalankan:
Ia mendapat semua permutasi dari daftar dan menyaring yang dengan panjang k.
sumber
Pyth , 28
Ini (berat) didasarkan pada jawaban Haskell.
Penjelasan:
Catatan: Sementara versi terbaru Pyth, 1.0.9, dirilis malam ini, dan karenanya tidak memenuhi syarat untuk tantangan ini, kode yang sama berfungsi dengan baik di 1.0.8.
sumber
Haskell + Data.List , 44 byte
Cobalah online!
Jawaban 46 byte cukup sulit dikalahkan, tetapi jika Anda memiliki
tails
dariData.List
Anda dapat melakukan 44 byte.sumber
05AB1E ,
1413 byteTerinspirasi oleh jawaban @Neil 's Charcoal , jadi pastikan untuk mendukungnya!
Cobalah secara online atau verifikasi beberapa kasus uji lagi .
Jika builtin diizinkan, ini bisa jadi 2 byte :
Cobalah secara online atau verifikasi beberapa kasus uji lagi .
Penjelasan:
sumber
APL (NARS), 80 karakter, 160 byte
tes dan cara menggunakannya:
outputnya tampaknya ok ... tapi bug mungkin terjadi ...
Dalam praktiknya mengembalikan kekosongan ditetapkan sebagai Zilde jika input alpha di luar jangkauan; jika alpha adalah 1, ia mengembalikan semua elemen dalam set (apakah itu benar?);
Ini di bawah ini tampaknya beberapa char kurang dari 2x lebih lambat di atas:
sumber
JS - 117
188Kegilaan metode array
sumber
C # (Visual C # Interactive Compiler) , 141 byte
Sayangnya, Tio / Mono tampaknya tidak mendukung deklarasi tipe T generik , jadi saya terpaksa kehilangan beberapa byte dengan tipe objek sebagai gantinya.
Cobalah online!
sumber