Seu programa deve receber uma entrada ( n
para fins de descrição) e gerar todas as permutações de um número de n
dígitos longos sem dígitos repetidos, em que cada um dos dígitos anteriores e incluindo seu índice é divisível pelo local no número em que ele cai .
Você pode ler sobre números mágicos aqui .
Regras:
1 <= n <= 10
- Nenhum dígito pode ser repetido
- O 0 inicial deve estar presente (se aplicável)
- O primeiro ao
x
décimo dígito do número (começando com o primeiro caractere como 1) deve ser divisível porx
, ou seja, em30685
,3
é divisível por 1,30
é divisível por 2,306
é divisível por 2, é divisível por 3,3068
é divisível por 4 e30685
é divisível por 5 . - O programa deve usar um número inteiro como entrada (por meio da linha de comando, como argumento de função etc.) e imprimir todas as permutações que satisfazem as regras.
- A saída deve ser separada por 1 ou mais caracteres de espaço em branco
- As permutações podem começar e com zero (portanto, não são números tecnicamente mágicos).
- A ordem de saída não importa
- Você não precisa lidar com entrada inesperada
- Vitórias menos caracteres em bytes
Exemplos
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
Agradecemos a Pizza Hut e John H. Conway pelo quebra-cabeça original (opção A). Obrigado a @Mego e @ sp3000 pelos links .
code-golf
permutations
DavisDude
fonte
fonte
Respostas:
Geléia ,
201716 bytesIsso é muito lento e consome muita memória ... Experimente online!
Como funciona
fonte
JavaScript (Firefox 30-57), 77 bytes
Editar: salvou 1 byte graças a @ edc65.
fonte
...of"012...
Pitão, 19 bytes
Demonstração
Uma solução de força bruta. Explicação a seguir. Inspiração graças a FryAmTheEggman
22 bytes
Demonstração
Os números são criados e armazenados como seqüências de caracteres e convertidos apenas em ints para verificar a divisibilidade.
Explicação:
fonte
._
e algumas outras coisas, mas é muuuito mais lento para grandes entradas:jjLkf!s.e%ib10hk._T.PUT
MATL , 30 bytes
Experimente online!
Está muito lento. Pois
input 3
leva alguns segundos no compilador online. Para ver os números que aparecem um por um, inclua aD
no final do código .Explicação
fonte
3
ver, você tem algumas indicações (por exemplo, 026). Além disso, uma explicação seria apreciadaRuby, 87 bytes
Solução recursiva básica.
Se você puder retornar uma lista das permutações em vez de imprimir, 85 bytes:
fonte
Python, 132 bytes
Eliminou 26 bytes ao me livrar
itertools
, graças ao Sp3000 por me fazer perceber que não deveria usá-lo.Eliminou 2 bytes usando a compreensão da lista em vez de
filter
, obrigado novamente ao Sp3000 pela dica.Experimente on-line: Python 2 , Python 3
fonte