Votre programme doit prendre une entrée ( n
à des fins de description) et sortir toutes les permutations d'un nombre n
composé de chiffres longs sans répétition de chiffres, où chacun des chiffres précédant et incluant son index est divisible par la place dans le nombre qu'il tombe .
Vous pouvez lire sur les nombres magiques ici .
Règles:
1 <= n <= 10
- Aucun chiffre ne peut être répété
- Le 0 de tête doit être présent (le cas échéant)
- Le premier au
x
troisième chiffre du nombre (en commençant par le premier caractère 1) doit être divisible parx
, c'est-à-dire en30685
,3
est divisible par 1,30
est divisible par 2,306
est divisible par 3,3068
est divisible par 4 et30685
est divislbe par 5 . - Le programme doit prendre un entier en entrée (via la ligne de commande, comme argument de fonction, etc.) et imprimer toutes les permutations qui satisfont aux règles.
- La sortie doit être séparée par au moins un espace blanc
- Les permutations peuvent commencer et avec zéro (ce ne sont donc pas des nombres techniquement magiques).
- L'ordre de sortie n'a pas d'importance
- Vous n'avez pas besoin de gérer une entrée inattendue
- Le moins de caractères en octets gagne
Exemples
Étant donné 1:
0
1
2
3
4
5
6
7
8
9
Étant donné 2:
02
04
06
08
10
12
14
16
18
20
24
26
28
30
32
34
36
38
40
42
46
48
50
52
54
56
58
60
62
64
68
70
72
74
76
78
80
82
84
86
90
92
94
96
98
Étant donné 10:
3816547290
Nous remercions Pizza Hut et John H. Conway pour le puzzle original (option A). Merci à @Mego et @ sp3000 pour leurs liens .
code-golf
permutations
DavisDude
la source
la source
Réponses:
Gelée ,
201716 octetsC'est très lent et gourmand en mémoire ... Essayez-le en ligne!
Comment ça fonctionne
la source
JavaScript (Firefox 30-57), 77 octets
Edit: 1 octet enregistré grâce à @ edc65.
la source
...of"012...
Pyth, 19 octets
Manifestation
Une solution de force brute. Explication à suivre. Inspiration grâce à FryAmTheEggman
22 octets
Manifestation
Les nombres sont construits et stockés sous forme de chaînes, et uniquement convertis en ints pour vérifier la divisibilité.
Explication:
la source
._
et quelques autres trucs, mais c'est plus lent pour les grandes entrées:jjLkf!s.e%ib10hk._T.PUT
MATL , 30 octets
Essayez-le en ligne!
C'est très lent. Car
input 3
cela prend quelques secondes dans le compilateur en ligne. Pour voir les chiffres apparaître un par un, ajoutez unD
à la fin du code .Explication
la source
3
je peux voir que vous avez quelques indications (par exemple 026). Une explication serait également appréciéeRubis, 87 octets
Solution récursive de base.
Si vous êtes autorisé à renvoyer une liste des permutations au lieu d'imprimer, 85 octets:
la source
Python, 132 octets
A chuté de 26 octets en se débarrassant de
itertools
, grâce au Sp3000 pour m'avoir fait réaliser que je ne devrais pas l'utiliser.Supprimé 2 octets en utilisant une compréhension de liste plutôt que
filter
, merci encore au Sp3000 pour l'astuce.Essayez-le en ligne: Python 2 , Python 3
la source