Su programa debe tomar una entrada ( n
para fines de descripción) y generar todas las permutaciones de un número de n
dígitos largos sin dígitos repetidos, donde cada uno de los dígitos que preceden e incluyen su índice son divisibles por el lugar en el número que corresponde. .
Puedes leer sobre los números mágicos aquí .
Reglas:
1 <= n <= 10
- No se pueden repetir dígitos
- El 0 inicial debe estar presente (si corresponde)
- El 1 ° al 3
x
° dígito del número (comenzando con el primer carácter como 1) debe ser divisible porx
, es decir30685
, en ,3
es divisible por 1,30
es divisible por 2,306
es divisible por 3,3068
es divisible por 4 y30685
es divisible entre 5 . - El programa debe tomar un número entero como entrada (a través de la línea de comando, como argumento de función, etc.) e imprimir todas las permutaciones que satisfacen las reglas.
- La salida debe estar separada por 1 o más caracteres de espacio en blanco
- Las permutaciones pueden comenzar y con cero (por lo que técnicamente no son números mágicos).
- El orden de salida no importa
- Usted no tiene que manejar la entrada inesperada
- Menos caracteres en bytes gana
Ejemplos
Dado 1:
0
1
2
3
4
5
6
7
8
9
Dado 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
Dado 10:
3816547290
Gracias a Pizza Hut y John H. Conway por el rompecabezas original (Opción A). Gracias a @Mego y @ sp3000 por sus enlaces .
code-golf
permutations
DavisDude
fuente
fuente
Respuestas:
Jalea ,
201716 bytesEsto es muy lento y requiere mucha memoria ... ¡ Pruébelo en línea!
Cómo funciona
fuente
JavaScript (Firefox 30-57), 77 bytes
Editar: guardado 1 byte gracias a @ edc65.
fuente
...of"012...
Pyth, 19 bytes
Demostración
Una solución de fuerza bruta. Explicación a seguir. Inspiración gracias a FryAmTheEggman
22 bytes
Demostración
Los números se crean y almacenan como cadenas, y solo se convierten en int para verificar la divisibilidad.
Explicación:
fuente
._
terminé con un uso más y algunas otras cosas, pero es mucho más lento para grandes entradas:jjLkf!s.e%ib10hk._T.PUT
MATL , 30 bytes
Pruébalo en línea!
Es muy lento. Porque
input 3
lleva unos segundos en el compilador en línea. Para ver los números que aparecen uno por uno, incluya unD
al final del código .Explicación
fuente
3
, puedo ver que tienes un par de indicaciones (por ejemplo, 026). También se agradecería una explicaciónRubí, 87 bytes
Solución recursiva básica.
Si puede devolver una lista de las permutaciones en lugar de imprimir, 85 bytes:
fuente
Python, 132 bytes
Eliminé 26 bytes al deshacerme
itertools
, gracias a Sp3000 por hacerme darme cuenta de que no debería estar usándolo.Se eliminaron 2 bytes utilizando una comprensión de la lista en lugar de
filter
, gracias de nuevo a Sp3000 por el consejo.Pruébelo en línea: Python 2 , Python 3
fuente