Tâche
Étant donné deux listes de caractères, sortez leur produit cartésien, c'est-à-dire la liste des appariements de chaque lettre de la première liste avec chaque lettre de la deuxième liste.
Exemple
"123456"
et "abcd"
donner:
[["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"]]
Contribution
Deux listes de caractères ou de chaînes. Les caractères utilisés seront alphanumériques a-z, A-Z, 0-9
et un caractère peut apparaître à la fois plusieurs fois et dans les deux entrées en même temps.
Production
Produit cartésien des listes d'entrées. C'est-à-dire une liste de chaque paire ordonnée possible d'un caractère de la première liste et d'un caractère de la seconde liste. Chaque paire est une liste ou une chaîne ou similaire de deux caractères ou de deux chaînes de longueur un. La longueur de la sortie sera égale au produit des longueurs des entrées.
Les paires doivent être répertoriées dans l'ordre; listant d'abord le premier caractère de la première liste avec le premier de la deuxième liste, suivi de tous les appariements du premier caractère de la première liste. La dernière paire se compose du dernier caractère de la première liste avec le dernier caractère de la deuxième liste.
La sortie doit être une liste plate de paires; pas une matrice 2D où les paires sont groupées par leur premier ou deuxième élément.
Cas de test
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"]]
la source
["1a", "1b", "1c", "2a", "2b", "2c", "3a", "3b", "3c"]
un format de sortie valide?code-golf
réponse la plus courte l'emporte donc. En cas d'égalité, la première réponse pour atteindre ce score est généralement le vainqueur (actuellement celui-ci ). Donnez-lui encore quelques jours, au moins, avant d'accepter une réponse, le cas échéant. Et voyez ici pour des directives sur la façon de répondre à votre propre question.Réponses:
05AB1E , 1 octet
Essayez-le en ligne!
la source
Haskell , 12 octets
Essayez-le en ligne!
la source
Mathematica, 12 octets
Prend deux listes de caractères en entrée.
la source
Tuples@*List
Alternativement, si des têtes arbitraires sont autorisées:Tuples@*f
APL (Dyalog) , 4 octets
Essayez-le en ligne!
,
aplatir∘.
le cartésien,
enchaînementla source
flatten
soit une bonne description ici, car l'aplatissement produirait un résultat incorrect, je pense que "resserrer" ou "réduire le classement" ou quelque chose de similaire devrait fonctionner. (Aplati [1,2] x [1,2] est [1,1,1,2,2,1,2,2])Rubis ,
3018 octets-12 octets de Jordan me rappelant un moyen d'utiliser la spécification à mon avantage!
Prend des listes de caractères en entrée.
Essayez-le en ligne!
la source
.chars
.Perl 6 , 4 octets
Ceci est juste une référence à l'opérateur intégré de produits croisés
X
. Il fonctionne sur des listes de toutes sortes, pas seulement sur des personnages.la source
Gelée , 1 octet
Essayez-le en ligne!
la source
Octave, 32 octets
Essayez-le en ligne!
la source
Tcl , 60 octets
Utilisation:
la source
JavaScript (ES6),
45363433 octetsNécessite Firefox. Prend les deux entrées sous forme de chaînes ou de tableaux de caractères individuels.
<space>
.Essayez-le
la source
x+y
format de sortie est -il valide?function
, vous avez déjà perdu! Je jetterai quelques pointeurs sur votre réponse plus tard, mais en attendant, jetez un œil à ma solution de mappage de tableau d'origine dans l'historique des modifications; vous devriez être en mesure d'extraire cela et de remplacer les fonctions fléchées par des fonctions "réelles".Bash, 18 ans
Cela peut être fait avec des extensions d'accolade:
Essayez-le en ligne .
la source
Brachylog , 5 octets
Essayez-le en ligne!
Explication
Assez explicite
la source
QBIC , 29 octets
Cela imprime des chaînes de 2 caractères avec toutes les combinaisons sur une ligne chacune.
Explication
la source
Pyth , 3 octets
La multiplication de deux chaînes agit simplement comme le produit cartésien.
Testez-le en ligne!
la source
*E
nécessiterait d'échanger l'ordre des chaînes d'entrée :( pyth.herokuapp.com/…MATL , 2 octets
*
est l'opérateur général des produits et le préfixe enZ
fait le produit cartésien et peut prendre deux chaînes comme arguments.Essayez-le en ligne!
la source
En fait , 1 octet
Essayez-le en ligne!
∙
est la commande de produit cartésien.la source
Ohm , 1 octet
Essayez-le en ligne!
Littéralement seulement le intégré
la source
J, 3 octets
C'est le verbe Catalogue dans J. Il faut Ravel (
,
) le résultat pour le rendre 1 dimensionnel.Essayez-le en ligne!
la source
Lisp commun, 63 octets
Essayez-le en ligne!
la source
Clojure, 21 octets
la source
PHP , 69 octets
Essayez-le en ligne!
la source
Python 2 , 39 octets
Essayez-le en ligne!
Solution alternative,
3430 octets-4 octets grâce à Anders Kaseorg.
Il y a un intégré pour cela ...
la source
from itertools import*;product
Cheddar , 52 octets
Essayez-le en ligne!
la source
05AB1E , 10 octets
Essayez-le en ligne!
C'est sans le intégré, et sans aucun doute ne sera pas compétitif.
la source
Rétine , 49 octets
Essayez-le en ligne! Prend l'entrée sur des lignes distinctes. Explication:
Chaque caractère de la première chaîne génère une ligne distincte préfixée par la deuxième chaîne.
La deuxième chaîne d'origine est supprimée.
Pour chaque caractère de la première chaîne, chaque caractère de la deuxième chaîne génère une ligne distincte préfixée avec le premier caractère.
Les caractères restants de la première chaîne sont supprimés.
la source
q / kdb +, 5 octets
Solution:
Exemple:
la source
Fusain ,
87 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Explication: Les variables
θ
etη
font implicitement référence aux deux chaînes d'entrée. LaF
commande boucle sur chaque caractère de la première entrée, tandis que laE
commande mappe sur chaque caractère de la deuxième entrée concaténant la variable de boucleι
et la variable de mappageκ
, dont le résultat est implicitement imprimé sur des lignes distinctes.la source
R , 29 octets
Essayez-le en ligne!
Notez que la matrice R est remplie par colonne, donc le résultat est dans l'ordre dicté par la spécification.
S'il est permis d'avoir
factors
pour l'entrée et la sortie, il y a un intégré ... mais il faut extraire les niveaux résultants du facteur donc à la fin ce serait plus de 29 octets.R , 11 octets
Essayez-le en ligne!
la source
Japt ,
52 octetsJapt dispose désormais d'une méthode pour le produit cartésien.
Prend l'entrée comme 2 tableaux de chaînes de caractères.
Essayez-le
la source
C # 7,
7863 octetsla source