Ketika diberi daftar nilai dan bilangan bulat positif n
, kode Anda harus menampilkan produk cartesian dari daftar dengan n
waktu itu sendiri .
Misalnya, dalam pseudocode fungsi Anda bisa mirip dengan:
for x1 in list:
for x2 in list:
for x3 in list:
...
for xn in list:
print x1, x2, x3, ... , xn
Contoh:
repeated_cart([1,2,3], 3)
1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
2 1 1
2 1 2
2 1 3
2 2 1
2 2 2
2 2 3
2 3 1
2 3 2
2 3 3
3 1 1
3 1 2
3 1 3
3 2 1
3 2 2
3 2 3
3 3 1
3 3 2
3 3 3
Fungsi bawaan (atau fungsi dari perpustakaan yang diimpor) yang menghitung produk Cartesian (atau daya) tidak diizinkan karena kode yang dihasilkan agak membosankan.
Input dan output harus dibatasi tetapi dapat diambil dengan metode yang masuk akal.
urutan output diberikan tidak masalah tetapi duplikat tidak diperbolehkan.
Ini adalah pertama kalinya saya memposting pertanyaan, jadi jika saya melakukan sesuatu yang salah, tolong beri tahu saya.
Jawaban:
Haskell , 21 byte
Cobalah online!
sumber
Gangguan Umum , 146 byte
Cobalah online!
ungolfed
sumber
R , 41 byte
Cobalah online!
combn
jelas bukan produk cartesian bawaan, karena ia menghitung semuan
-kombinasi dari inputnya.R , 40 byte
Cobalah online!
expand.grid
mungkin merupakan produk bawaan cartesian.sumber
Perl 6 , 16 byte
Cobalah
Diperluas:
sumber
K (ngn / k) , 10 byte
Cobalah online!
{
}
adalah fungsi dengan argumenx
dany
#x
panjangnyax
y##x
panjangnya waktu yangx
berulangy
!y##x
semua panjang-y tupel lebih dari 0,1, ..., panjang (x) -1 sebagai matriks transposisi+
mengubah urutanx@
elemenx
pada indeks tersebutsumber
APL (Dyalog Classic) ,
1812 byteCobalah online!
-6 byte terima kasih kepada @ngn!
sumber
⍳
dengan argumen vektor untuk menghasilkan indeks dan kemudian⍺[ ]
untuk mendapatkan nilai yang sesuaiRANK ERROR
ketika saya mencoba melakukan itu.⍺[↑,⍳⍵⍴≢⍺]
Perl 5 , 33 byte
Cobalah online!
sumber
Python 2 ,
6958 byteCobalah online!
Mengambil daftar
a
dan bilangan bulatn
; mengembalikan daftar daftar.sumber
Ruby , 53 byte
Cobalah online!
Pendekatan rekursif, tidak terlalu pendek, tetapi dijamin bebas dari built-in.
Sangat menggoda untuk menggunakan metode permutasi, tetapi ini mungkin tidak masuk hitungan, dan dokumen sebenarnya tidak menyatakan jaminan kebenaran urutan, meskipun tampaknya bekerja dalam praktik:
Ruby , 35 byte
Cobalah online!
sumber
Prolog (SWI) , 72 byte
Cobalah online!
sumber
Racket, 92 byte
Cobalah secara Online
Tidak disatukan
sumber
Jelly ,
1197 byteCobalah online!
Penjelasan
sumber
Bash murni (tanpa utilitas eksternal), 57
Input diberikan sebagai parameter baris perintah; Pertama adalah
n
, kedua adalah daftar yang dipisahkan koma.Cobalah online!
sumber
Java 10, 19 + 135 = 154 byte
Cobalah secara Online
Tidak disatukan
Ucapan Terima Kasih
sumber
Object
danList
di masing-masing loop kevar
untuk -4 byte. Selain itu, Anda kemudian dapat mengubahSet<List>f
keList<List>f
danSet o=new HashSet();
kevar o=new Stack();
-1 byte tambahan. Cobalah online.Oracle SQL, 177 byte
Buat jenis koleksi (31 byte):
Kemudian gunakan kueri (146 byte):
Dengan asumsi bahwa parameter input ada di tabel
i
dengan koloma
danb
:SQL Fiddle
Hasil :
sumber
Bash , 61 byte
Cobalah online! Saya menemukan string berulang dan bergabung dengan daftar dengan koma sangat sulit dilakukan di bash.
sumber
Javascript (Node) , 75 byte
Fungsi rekursif yang menampilkan daftar ke konsol. Di mana
a
array kosong dani
0 (tidak yakin apakah ini masih memenuhi syarat):Cobalah online!
sumber
(m,n,a=[],i=0)=>
JavaScript (SpiderMonkey) , 52 byte
Cobalah online!
sumber
J , 17 byte
Bagaimana itu bekerja?
Saya menghitung semua
n
angka -digit dalam sistem angka dengan mendasarkan panjang daftar.Cobalah online!
sumber
CJam , 26 byte
Cobalah online!
Andai saja CJam memiliki perintah satu karakter untuk produk cartesian dan perataan.
sumber
Oktaf , 38 byte
Fungsi anonim yang mengambil vektor baris nilai dan integer.
Cobalah online!
sumber
Pari / GP , 46 byte
Cobalah online!
sumber