Tugas
Diberikan dua daftar karakter, hasilkan produk Kartesius mereka, yaitu daftar pasangan dari setiap huruf dari daftar pertama dengan setiap huruf dari daftar kedua.
Contoh
"123456"
dan "abcd"
berikan:
[["1","a"],["1","b"],["1","c"],["1","d"],["2","a"],["2","b"],["2","c"],["2","d"],["3","a"],["3","b"],["3","c"],["3","d"],["4","a"],["4","b"],["4","c"],["4","d"],["5","a"],["5","b"],["5","c"],["5","d"],["6","a"],["6","b"],["6","c"],["6","d"]]
Memasukkan
Dua daftar karakter atau string. Karakter yang digunakan akan berupa alfanumerik a-z, A-Z, 0-9
dan sebuah karakter dapat muncul beberapa kali sekaligus di kedua input pada saat yang bersamaan.
Keluaran
Produk Cartesian dari daftar input. Yaitu, daftar setiap pasangan karakter yang mungkin dipesan dari daftar pertama dan karakter dari daftar kedua. Setiap pasangan adalah daftar atau string atau mirip dengan dua karakter, atau dua string panjang-satu. Panjang output akan sama dengan produk dari panjang input.
Pasangan harus terdaftar dalam urutan; pertama daftar karakter pertama dari daftar pertama dengan yang pertama dari daftar kedua, diikuti oleh semua pasangan karakter pertama dari daftar pertama. Pasangan terakhir terdiri dari karakter terakhir dari daftar pertama bersama-sama dengan karakter terakhir dari daftar kedua.
Outputnya harus berupa daftar pasangan datar; bukan matriks 2D di mana pasangan dikelompokkan berdasarkan elemen pertama atau kedua.
Uji kasus
inputs output
"123456", "abcd" [["1","a"],["1","b"],["1","c"],["1","d"],["2","a"],["2","b"],["2","c"],["2","d"],["3","a"],["3","b"],["3","c"],["3","d"],["4","a"],["4","b"],["4","c"],["4","d"],["5","a"],["5","b"],["5","c"],["5","d"],["6","a"],["6","b"],["6","c"],["6","d"]]
"abc", "123" [["a","1"],["a","2"],["a","3"],["b","1"],["b","2"],["b","3"],["c","1"],["c","2"],["c","3"]]
"aa", "aba" [["a","a"],["a","b"],["a","a"],["a","a"],["a","b"],["a","a"]]
sumber
["1a", "1b", "1c", "2a", "2b", "2c", "3a", "3b", "3c"]
format output yang valid?code-golf
itu jawaban terpendek menang. Dalam hal seri, jawaban pertama untuk mencapai skor itu biasanya adalah pemenang (saat ini yang ini ). Berikan beberapa hari lagi, setidaknya, sebelum menerima jawaban, jika, sama sekali. Dan lihat di sini untuk panduan tentang menjawab pertanyaan Anda sendiri.Jawaban:
05AB1E , 1 byte
Cobalah online!
sumber
Haskell , 12 byte
Cobalah online!
sumber
Mathematica, 12 byte
Mengambil dua daftar karakter sebagai input.
sumber
Tuples@*List
Atau, jika kepala sewenang-wenang diizinkan:Tuples@*f
APL (Dyalog) , 4 byte
Cobalah online!
,
meratakan∘.
Cartesian,
rangkaiansumber
flatten
ini bukan deskripsi yang baik di sini, karena perataan akan menghasilkan hasil yang salah, saya pikir "kencangkan" atau "kurangi peringkat" atau sesuatu yang serupa seharusnya bekerja. (Diratakan [1,2] x [1,2] adalah [1,1,1,2,2,1,2,2])Ruby ,
3018 byte-12 byte dari Jordan mengingatkan saya tentang cara menggunakan spec untuk keuntungan saya!
Mengambil daftar karakter sebagai input.
Cobalah online!
sumber
.chars
.Perl 6 , 4 byte
Ini hanya referensi ke operator produk lintas bawaan
X
. Ini berfungsi pada daftar apa pun, bukan hanya karakter.sumber
Jelly , 1 byte
Cobalah online!
sumber
Oktaf, 32 byte
Cobalah online!
sumber
Tcl , 60 byte
Menggunakan:
sumber
JavaScript (ES6),
45363433 byteMembutuhkan Firefox. Mengambil input sebagai string atau sebagai array karakter individu.
<space>
.Cobalah
sumber
x+y
format output yang valid?function
, Anda sudah kalah! Saya akan memberikan beberapa petunjuk pada jawaban Anda nanti, tetapi sementara itu, lihat solusi pemetaan array asli saya dalam sejarah edit; Anda harus bisa merobeknya dan mengganti fungsi panah dengan fungsi "nyata".Bash, 18
Ini dapat dilakukan dengan ekspansi brace:
Cobalah online .
sumber
Brachylog , 5 byte
Cobalah online!
Penjelasan
Cukup jelas
sumber
QBIC , 29 byte
Ini mencetak string 2-char dengan semua kombinasi pada satu baris masing-masing.
Penjelasan
sumber
Pyth , 3 byte
Mengalikan dua string hanya bertindak sebagai produk kartesius.
Uji secara online!
sumber
*E
akan diperlukan untuk menukar urutan string input :( pyth.herokuapp.com/…MATL , 2 byte
*
adalah operator umum untuk produk dan awalanZ
menjadikannya produk kartesius dan dapat mengambil dua string sebagai argumen.Cobalah online!
sumber
Sebenarnya 1 byte
Cobalah online!
∙
adalah perintah produk Cartesian.sumber
Ohm , 1 byte
Cobalah online!
Secara harfiah hanya built-in
sumber
J, 3 byte
Ini adalah kata kerja Katalog dalam J. Kita perlu Ravel (
,
) hasilnya untuk membuatnya 1 dimensi.Cobalah online!
sumber
Common Lisp, 63 byte
Cobalah online!
sumber
Clojure, 21 byte
sumber
PHP , 69 byte
Cobalah online!
sumber
Python 2 , 39 byte
Cobalah online!
Solusi alternatif,
3430 byte-4 byte berkat Anders Kaseorg.
Ada built-in untuk ini ...
sumber
from itertools import*;product
Cheddar , 52 byte
Cobalah online!
sumber
05AB1E , 10 byte
Cobalah online!
Ini tanpa built-in, dan tidak diragukan lagi tidak akan kompetitif.
sumber
Retina , 49 byte
Cobalah online! Mengambil input pada saluran terpisah. Penjelasan:
Setiap karakter dalam string pertama menghasilkan baris terpisah yang diawali oleh string kedua.
String kedua asli dihapus.
Untuk setiap karakter di string pertama, setiap karakter di string kedua menghasilkan baris terpisah yang diawali dengan karakter pertama.
Karakter sisa dari string pertama dihapus.
sumber
q / kdb +, 5 byte
Larutan:
Contoh:
sumber
Arang ,
87 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan: Variabel
θ
danη
secara implisit merujuk pada dua string input. TheF
perintah loop atas setiap karakter dari input pertama, sedangkanE
perintah peta lebih setiap karakter dari input kedua concatenating variabel loopι
dan variabel petaκ
, yang hasilnya secara implisit dicetak pada baris terpisah.sumber
R , 29 byte
Cobalah online!
Perhatikan bahwa matriks R diisi oleh kolom, sehingga hasilnya dalam urutan yang ditentukan oleh spesifikasi.
Jika diizinkan untuk memiliki
factors
input dan output, ada built-in ... tetapi orang perlu mengekstraksi tingkat yang dihasilkan dari faktor sehingga pada akhirnya akan lebih dari 29 byte.R , 11 byte
Cobalah online!
sumber
Japt ,
52 byteJapt sekarang memiliki metode untuk produk Cartesian.
Mengambil input sebagai 2 larik string karakter.
Cobalah
sumber
C # 7,
7863 bytesumber