Lorsqu'on lui donne une liste de valeurs et un entier positif n
, votre code doit sortir le produit cartésien de la liste avec lui-même les n
temps.
Par exemple, dans le pseudocode, votre fonction pourrait être similaire à:
for x1 in list:
for x2 in list:
for x3 in list:
...
for xn in list:
print x1, x2, x3, ... , xn
Exemple:
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
Les fonctions intégrées (ou les fonctions des bibliothèques importées) qui calculent le produit cartésien (ou la puissance) ne sont pas autorisées car le code résultant est quelque peu ennuyeux.
Les entrées et les sorties doivent être délimitées mais peuvent être prises par toute méthode raisonnable.
l'ordre dans lequel la sortie est donnée n'a pas d'importance mais les doublons ne sont pas autorisés.
C'est la première fois que je pose une question, donc si j'ai fait quelque chose d'horriblement mal, dites-le moi.
Réponses:
Haskell , 21 octets
Essayez-le en ligne!
la source
Lisp commun , 146 octets
Essayez-le en ligne!
non golfé
la source
R , 41 octets
Essayez-le en ligne!
combn
n'est certainement pas un produit cartésien intégré, car il calcule toutes lesn
combinaisons de son entrée.R , 40 octets
Essayez-le en ligne!
expand.grid
est probablement un produit cartésien intégré.la source
Perl 6 , 16 octets
Essayez-le
Expnded:
la source
K (ngn / k) , 10 octets
Essayez-le en ligne!
{
}
est une fonction avec des argumentsx
ety
#x
la longueur dex
y##x
la longueur dex
répétitiony
fois!y##x
tous les tuples de longueur y supérieurs à 0,1, ..., longueur (x) -1 comme matrice transposée+
transposerx@
éléments dex
ces indicesla source
APL (Dyalog Classic) ,
1812 octetsEssayez-le en ligne!
-6 octets grâce à @ngn!
la source
⍳
avec un argument vectoriel pour générer des indices, puis⍺[ ]
pour obtenir les valeurs correspondantesRANK ERROR
quand j'ai essayé de faire ça.⍺[↑,⍳⍵⍴≢⍺]
Perl 5 , 33 octets
Essayez-le en ligne!
la source
Python 2 ,
6958 octetsEssayez-le en ligne!
Prend une liste
a
et un entiern
; renvoie une liste de listes.la source
Rubis , 53 octets
Essayez-le en ligne!
Approche récursive, pas si courte, mais garantie d'être exempte de toute intégration.
Il est tentant d'utiliser des méthodes de permutation, mais cela ne compte probablement pas, et les documents n'indiquent en fait aucune garantie de l'exactitude de l'ordre, bien que cela semble fonctionner dans la pratique:
Rubis , 35 octets
Essayez-le en ligne!
la source
Prolog (SWI) , 72 octets
Essayez-le en ligne!
la source
Raquette, 92 octets
Essayez-le en ligne
Non golfé
la source
Gelée ,
1197 octetsEssayez-le en ligne!
Explication
la source
Pure Bash (pas d'utilitaires externes), 57
L'entrée est donnée en tant que paramètres de ligne de commande; 1er est
n
, 2ème est une liste séparée par des virgules.Essayez-le en ligne!
la source
Java 10, 19 + 135 = 154 octets
Essayez-le en ligne
Non golfé
Remerciements
la source
Object
etList
dans les boucles for-eachvar
par -4 octets. De plus, vous pouvez ensuite passerSet<List>f
àList<List>f
etSet o=new HashSet();
àvar o=new Stack();
pour -1 octet supplémentaire. Essayez-le en ligne.Oracle SQL, 177 octets
Créez un type de collection (31 octets):
Utilisez ensuite la requête (146 octets):
En supposant que les paramètres d'entrée sont dans le tableau
i
avec des colonnesa
etb
:SQL Fiddle
Résultats :
la source
Bash , 61 octets
Essayez-le en ligne! J'ai trouvé que répéter des chaînes et joindre des listes avec des virgules était étonnamment difficile à faire en bash.
la source
Javascript (Noeud) , 75 octets
Fonction récursive qui affiche la liste sur la console. Où
a
est un tableau vide eti
vaut 0 (je ne sais pas si cela est toujours admissible):Essayez-le en ligne!
la source
(m,n,a=[],i=0)=>
JavaScript (SpiderMonkey) , 52 octets
Essayez-le en ligne!
la source
J , 17 octets
Comment ça fonctionne?
n
J'énumère tous les nombres à -digit dans un système numérique avec base la longueur de la liste.Essayez-le en ligne!
la source
CJam , 26 octets
Essayez-le en ligne!
Si seulement CJam avait des commandes à un caractère pour le produit cartésien et l'aplatissement.
la source
Octave , 38 octets
Fonction anonyme qui prend un vecteur ligne de valeurs et un entier.
Essayez-le en ligne!
la source
Pari / GP , 46 octets
Essayez-le en ligne!
la source