Créez un code qui prend une liste et un nombre en entrée et génère toutes les combinaisons possibles avec la longueur du numéro. Par exemple, avec la liste {0,1} et le nombre 2 :
00
01
10
11
Votre programme ne doit pas s'attendre à des caractères deux fois ou plus souvent dans la liste, tels que {0,0,0,0,0,1,1,5,5}
Assurez-vous d'imprimer les combinaisons triées, dans l'ordre de la liste:
Avec la liste {0,1} et le chiffre 5 (généré par une partie de mon code, ce qui est beaucoup trop long pour gagner):
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111
Mais avec la liste {1,0} et le numéro 2 :
11
10
01
00
Comme vous pouvez le voir, la liste inversée signifie l'ordre inversé.
Jetez un oeil à la structure, c'est comme un arbre.
C'est le code-golf, donc le code le plus court en octets gagne!
Réponses:
Gelée , 1 octet
TryItOnline
Atome intégré de puissance cartésienne, en tant que lien dyadique avec l'argument gauche les éléments et l'argument droit le décompte, ou en tant que programme complet avec le premier argument les éléments et le deuxième argument le décompte.
la source
Haskell, 20 octets
Exemple d'utilisation:
replicate
fait desn
copies du 2e paramètre etmapM id
construit les combinaisons. Btw,mapM id
est le même quesequence
, mais 1 octet de moins.la source
MATL , 2 octets
Puissance cartésienne intégrée ...
Essayez-le en ligne!
la source
Pyth, 2 octets
Un programme qui prend la saisie dans le formulaire
list,number
et imprime une liste de listes.Suite de tests
Comment ça fonctionne
la source
Perl 6 , 15 octets
Explication:
la source
JavaScript (Firefox 30+), 55 octets
Je suis certain à 99% que la récursivité est la meilleure façon de procéder à ce sujet en JavaScript.
la source
Perl, 30 octets
28 octets de code +
-nl
indicateur.Pour l'exécuter:
Je pense que prendre l'entrée comme une liste de nombres est logique pour Perl. Cependant, si nous permettons un peu de fantaisie, et prenons l'entrée avec les crochets et la virgule (comme indiqué dans la question), nous pouvons descendre à 20 octets :
Explications:
glob
le but initial en Perl est lister et parcourir les noms de fichiers, mais lorsque son argument contient des crochets, il génère des combinaisons formées d'un élément de chaque groupe de crochets.-a
autosplit sur les espaces de l'entrée et placez le résultat dans le@F
tableau.$"
est le séparateur de liste: c'est le séparateur inséré entre les éléments d'une liste à l'intérieur d'une chaîne. Nous le définissons sur,
, donc"{@F"}
produit{.,.}
(si@F
contient 0 et 1).Ensuite ,
x
est l'opérateur de répétition de chaîne (et<>
obtient une ligne d'entrée).Et enfin,
say for
parcourt la liste générée parglob
et imprime les éléments.la source
Mathematica, 6 octets
Encore pire que Jelly :(
Usage
la source
Python, 57 octets
repl.it
Fonction sans nom prenant une liste d'objets
o
et un nombren
et renvoyant une liste des combinaisons.la source
Pure Bash, 36
Entrée par les paramètres de ligne de commande - La liste est une liste séparée par des virgules entre accolades, par exemple:
Notez que la liste d'entrée doit être citée afin que le shell appelant ne la développe pas trop tôt.
Ideone .
la source
bash a.sh "{0,1}" 2
->{0,1}{0,1}
(version 4.4.5 (1) -release)R ,
5345 octetsEssayez-le en ligne!
rev
est là pour se conformer à l'ordre de tri précis demandé (ce qui ne semble pas vraiment essentiel au problème) et ajoute 5 octets.la source
rev
pour 45 octets :)Raquette 123 octets
Non golfé:
Essai:
Production:
la source
PHP, 109 octets
Prend la longueur comme premier argument et la liste comme tout autre argument.
Utilisez comme:
S'exécutera dans une erreur fatale "mémoire insuffisante" si la longueur 0 est demandée.
la source
05AB1E ,
21 octets-1 octet grâce à @Enigma .
Essayez-le en ligne.
Entrée en tant que
number\nlist
, sortir en tant que liste de listes.Explication:
la source
I
ici.I
parce que j'essayais initialement de comprendre comment avoir plusieurs entrées et que le nombre et la liste étaient inversés. Assez stupide pour garder leI
là .. Merci!