introduction
Dans une conversation privée, un de mes amis est apparemment récemment tombé sur un système de sécurité qui a les deux restrictions suivantes sur ses broches valides:
- Chaque chiffre doit être unique (c'est-à-dire que "1" ne peut apparaître qu'une seule fois)
- L'ordre des chiffres n'a pas d'importance ("1234" = "4321")
Donc, pour illustrer la gravité de ce système de cadenas, énumérons en fait tous les codes PIN valides!
Contribution
Votre saisie consistera en un seul entier positif, qui indique la longueur du code PIN.
Production
Votre sortie se compose d'une liste d'entiers ou de chaînes non négatifs *, qui énumèrent tous les codes PIN valides de la longueur donnée.
* Plus précisément quelque chose qu'un humain peut utiliser pour essayer toutes les combinaisons si vous l'imprimez pour lui. Cela signifie qu'un ensemble d'ensembles de chiffres et de tableaux de tableaux de chiffres est correct.
Qui gagne?
Il s'agit de code-golf, donc la réponse la plus courte en octets l'emporte! Des règles et des lacunes standard s'appliquent.
Étuis d'angle
- Le comportement de sortie n'est pas défini si un entier supérieur à 10 est entré.
- L'ordre des chiffres dans chaque entrée de sortie n'est pas défini, car les entrées avec un zéro contiennent réellement ledit zéro, c'est-à-dire que vous ne pouvez pas supprimer "0123" à "123" mais "1230", "1203" et "1023" sont tous valides comme "0123".
Cas de test
1
[0,1,2,3,4,5,6,7,8,9]
2
[10,20,30,40,50,60,70,80,90,21,31,41,51,61,71,81,91,32,42,52,62,72,82,92,43,53,63,73,83,93,54,64,74,84,94,65,75,85,95,76,86,96,87,97,98]
3
[210,310,410,510,610,710,810,910,320,420,520,620,720,820,920,430,530,630,730,830,930,540,640,740,840,940,650,750,850,950,760,860,960,870,970,980,321,421,521,621,721,821,921,431,531,631,731,831,931,541,641,741,841,941,651,751,851,951,761,861,961,871,971,981,432,532,632,732,832,932,542,642,742,842,942,652,752,852,952,762,862,962,872,972,982,543,643,743,843,943,653,753,853,953,763,863,963,873,973,983,654,754,854,954,764,864,964,874,974,984,765,865,965,875,975,985,876,976,986,987]
4
[3210,4210,5210,6210,7210,8210,9210,4310,5310,6310,7310,8310,9310,5410,6410,7410,8410,9410,6510,7510,8510,9510,7610,8610,9610,8710,9710,9810,4320,5320,6320,7320,8320,9320,5420,6420,7420,8420,9420,6520,7520,8520,9520,7620,8620,9620,8720,9720,9820,5430,6430,7430,8430,9430,6530,7530,8530,9530,7630,8630,9630,8730,9730,9830,6540,7540,8540,9540,7640,8640,9640,8740,9740,9840,7650,8650,9650,8750,9750,9850,8760,9760,9860,9870,4321,5321,6321,7321,8321,9321,5421,6421,7421,8421,9421,6521,7521,8521,9521,7621,8621,9621,8721,9721,9821,5431,6431,7431,8431,9431,6531,7531,8531,9531,7631,8631,9631,8731,9731,9831,6541,7541,8541,9541,7641,8641,9641,8741,9741,9841,7651,8651,9651,8751,9751,9851,8761,9761,9861,9871,5432,6432,7432,8432,9432,6532,7532,8532,9532,7632,8632,9632,8732,9732,9832,6542,7542,8542,9542,7642,8642,9642,8742,9742,9842,7652,8652,9652,8752,9752,9852,8762,9762,9862,9872,6543,7543,8543,9543,7643,8643,9643,8743,9743,9843,7653,8653,9653,8753,9753,9853,8763,9763,9863,9873,7654,8654,9654,8754,9754,9854,8764,9764,9864,9874,8765,9765,9865,9875,9876]
la source
Réponses:
Gelée , 4 octets
Essayez-le en ligne!
Explication
Le comportement de
n > 10
est une liste vide.la source
05AB1E , 5 octets
Essayez-le en ligne!
Explication
la source
ù
c'était une chose. Je suis sûr que j'ai déjà utilisé un filtre. Quelle est sa nouveauté?JavaScript (ES7), 89 octets
Renvoie une liste de listes de chiffres (sous forme de caractères) ou une liste vide si n> 10 .
Essayez-le en ligne!
Comment?
Nous générons d'abord une liste de tous les chiffres décimaux sous forme de caractères en calculant 2 29 = 536870912 , en ajoutant le «4» manquant et en divisant:
Nous calculons ensuite l'ensemble de puissance:
Enfin, nous filtrons les résultats sur leur longueur:
la source
Python 3 , 57 octets
Essayez-le en ligne!
Trouve toutes les combinaisons
0 .. 9
de longueurl
.Le comportement de
n > 10
est une liste vide.la source
Wolfram Language (Mathematica) , 22 octets
Essayez-le en ligne!
la source
Python 2 , 62 octets
Renvoie un ensemble de chaînes.
Essayez-le en ligne!
la source
Pyth, 4 octets
Essayez-le ici
Explication
la source
R , 17 octets
Essayez-le en ligne!
Erreurs d'entrée supérieures à
10
.Renvoie un
matrix
où chaque colonne est un code PIN.la source
Rubis , 30 octets
Essayez-le en ligne!
la source
MATL , 6 octets
Essayez-le en ligne!
Ne renvoie rien (tableau vide) pour
k>10
.la source
Haskell ,
5650 octets-6 octets grâce à Hat Wizard .
Essayez-le en ligne!
la source
Java (JDK 10) , 105 octets
Essayez-le en ligne!
la source
Haskell , 47 octets
Essayez-le en ligne!
Explication
Lorsque le nombre de chiffres est nul, il n'y a qu'une seule combinaison, celle qui est vide:
Lorsque le nombre de chiffres est
n
etn/=0
les combinaisons sont toutes les façons d'ajouter des chiffres aux combinaisons def$n-1
telle sorte qu'aucun chiffre n'est ajouté à une combinaison qui le contient déjà.la source
Gaia ,
43 octetsEssayez-le en ligne!
Cela fait un moment que je n'ai pas posté de réponse dans Gaia! Merci à M. Xcoder d'avoir enregistré un octet!
la source
@
.Rétine ,
5136 octetsEssayez-le en ligne! Ne produit rien pour
n>10
. Explication:Remplacez l'entrée par 10
_
s.Répétez le reste du programme
n
fois.Préfixez chaque numéro avec
_
répété selon son premier chiffre.Correspond à tous les
_
s, mais inclut tous les éléments suivants_
s dans la correspondance, pour lesquels nous devons activer les correspondances qui se chevauchent.Pour chaque
_
trouvé, préfixez le nombre de_
s à sa gauche au nombre.C'est un peu délicat, alors peut-être qu'un cas réel serait mieux. Supposons que nous ayons déjà exécuté la boucle deux fois, de sorte que tous les codes PIN à 2 chiffres aient été générés, et nous travaillons actuellement sur eux pour créer des codes PIN à 3 chiffres. Nous allons voir ce qui arrive à
36
: Le premier chiffre est3
, donc trois_
s sont préfixés, à faire___36
. Cela crée alors les correspondances suivantes, marquées ici avec`'
s:$%'
évalue à36
dans les trois cas, ce qui donne des NIP à 3 chiffres036
,136
et236
.Si nous devions ensuite créer des codes PIN à 4 chiffres,
036
aucun_
s ne serait préfixé et, par conséquent, il n'y aurait aucune correspondance dans la sortie finale.la source
^0
et¶
à un coût de 5 octets.Proton , 43 octets
Essayez-le en ligne!
Proton a finalement devancé Python: DI pensait
(import itertools)
retourner la valeur mais apparemment j'ai échoué. L'importation*
ultérieure ne fonctionne pas non plus car ce n'est pas dans un lambda, c'est une expression de niveau supérieur.la source
Japt, 5 octets
Génère un tableau de tableaux de chiffres. Génère toutes les combinaisons si l'entrée est
0
ou un tableau vide si l'entrée est<0
ou>10
.Essayez-le
Explication
la source
Stax , 4 octets
Essayez-le en ligne!
Vd
est"0123456789"
.,
pousse l'entrée dans la pile principale.S
obtient des combinaisons de la taille spécifiée.Dans le lien tio,
m
est utilisé dans le pied de page pour imprimer chaque sortie.la source
Standard ML ,
124122121 octetsEssayez-le en ligne! Exemple d'utilisation:
!2
rendements[[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[1,0],[1,2],[1,3], ...]
.Non golfé:
Quelques alternatives:
125123 octetsEssayez-le en ligne!Définit une fonction anonyme qui est liée à
it
.127124 octetsEssayez-le en ligne!
la source
JavaScript (Node.js) , 53 octets
Essayez-le en ligne!
la source
Oracle 18 SQL, 169 octets
Pas une langue de golf mais:
Attendu que l'entrée soit dans une table
i
avec une colonnea
:Essayez-le en ligne sur Oracle Live SQL (une connexion gratuite est requise puis copiez-collez la solution dans une feuille de calcul) ou SQLFiddle (pas de connexion mais nécessite +7 octets pour fonctionner sur la version Oracle inférieure).
la source
CJam ,
1311 octetsEssayez-le en ligne!
Techniquement, ne s'exécute pas sur tio.run, car l'espace de tas est épuisé. Cependant, il fonctionne correctement pour les claviers jusqu'à 9 chiffres et devrait fonctionner correctement avec plus de RAM.
Enregistré 2 octets grâce à Dennis
la source
Bash ,
11399 octetsEssayez-le en ligne!
la source
r 0
ne fonctionne pas.r
est la fonction récursive: elle n'est pas destinée à être lancée avec seulement 1 paramètre.p 0
le comportement n'est pas spécifié dans la question.JavaScript (Firefox 30-57), 67 octets
Port de ma réponse Retina, mais fonctionne
n=0
aussi (retour d'une liste d'une chaîne vide, distincte d'une liste vide pourn>10
).la source
Fusain , 21 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Poussez la chaîne vide dans la liste prédéfinie.
Faites une boucle sur chaque chiffre.
Ajoutez le chiffre à chaque chaîne de la liste.
Ajoutez le résultat à la liste d'origine.
Imprimez toutes les chaînes avec le nombre correct de chiffres.
la source
Perl 6 , 20 octets
Essayez-le en ligne!
C'est exactement ce que
combinations
(en tant que sous-programme, ou.combinations
sur une liste).https://docs.perl6.org/routine/combinations
la source
J , 32 octets
.. frustrant plus longtemps que Mathematica et R
f=:{[:(#@>"0]/.])[:<@I.@#:@i.2^]
TIOla source