Dado um número inteiro N
, imprima o N
número positivo th K
com a seguinte propriedade na base decimal:
Para cada dígito I
na posição P
de K
, o número formado K
removendo o P
dígito (ie I
) é divisível por I
.
Exemplo e observações
324
é esse número:
3
divide24
2
divide34
4
divide32
Nota 1: assumimos que o número vazio é divisível por qualquer coisa, como 0
. Portanto 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
e 9
são válidos.
Nota 2: K
não pode conter o dígito 0
, pois você não pode dividir por 0
.
Entradas e saídas
- Você pode considerar a entrada como argumento de função, até
STDIN
etc. - Você pode retornar a saída de uma função, através de
STDOUT
etc. - Você pode indexar esses números começando em
0
(nesse casoN >= 0
) ou em1
(nesse casoN > 0
), o que mais lhe convier.
Casos de teste
Esses exemplos são indexados de 0
, portanto, se você indexou de 1
, adicione 1
os números na N
coluna.
N Output
0 1
4 5
8 9
15 77
16 88
23 155
42 742
47 1113
121 4244
144 6888
164 9999
Pontuação
Isso é código-golfe , então a resposta mais curta em bytes vence.
code-golf
number
arithmetic
integer
Fatalizar
fonte
fonte
10000
números excludíveis .100000
(1e5
) números excludíveis .Respostas:
Geléia ,
2119 bytesA entrada é indexada em 1. Experimente online!
Como funciona
fonte
Pyth, 20
Experimente aqui ou execute o Test Suite
N é 1 indexado para esta resposta.
Usa basicamente a mesma lógica do meu script python. Diferenças notáveis estão sendo usadas
.D
para excluir o dígito da sequência durante o teste e usando o tratamento de exceções para lidar com zero dígitos.fonte
Pitão, 26 bytes
Suíte de teste.
fonte
Python 2, 93 bytes
Muito ineficiente. A entrada é indexada em 1. Teste em Ideone .
Versão alternativa, 100 bytes
O código acima realiza aproximadamente 10 x testes de divisibilidade, onde apenas x é necessário. À custa de apenas sete bytes extra , a eficiência pode ser melhorada drasticamente, quer por substituição
*r
com*len(`r`)
ou por refatorando o código como se segue.Isso lida com todos os casos de teste com facilidade, mesmo no Ideone .
fonte
JavaScript (ES6),
827876 bytesA entrada é indexada em 1. Funciona construindo uma sequência do formulário
false|'24'%3|'34'%2|'32'%4
e avaliando-o. As strings são usadas porque ainda são sintaticamente válidas no caso de um dígito.A recursão limita isso a cerca de n = 119. Versão iterativa para
888482 bytes:Editar: salvou 2 bytes graças a @ Dennis ♦.
fonte
"|'$`$''%$&"
salva dois bytes.Ruby, 90
Abordagem semelhante à resposta Javascript de Neil, mas significativamente mais longa devido à falta de conversão implícita de tipo (exceto que os booleanos são convertidos em strings por
gsub
, o que é bom).fonte
Ruby, 109 bytes
fonte
Hoon , 246 bytes
Ungolfed:
Isso ... é realmente terrível. Sinto-me sujo por postar isso.
Defina
k
para a forma de sequência do número atual, mapeie a lista[0...(length k)-1]
dividindo a sequência nesse índice (a
). Pegue oa
personagem, analise-o em um número e, se for,0
retorne não. Obtenha o prefixo dea
e solde-o na outra metade da divisão, analise um número, verifique se o índice o divide uniformemente.++levy
retorna yes se chamar a função em todos os elementos da lista também for yes. Nesse caso, a função foi++test
respondida com yes, portanto, verifica se todos os caracteres estãok
funcionando.Se estivermos no 0º valor, retornamos o número atual, ou então recorremos com n decrementado (e incrementado
x
)fonte