Dado un número entero N
, genera el N
número positivo th K
con la siguiente propiedad en base decimal:
Para cada dígito I
en la posición P
de K
, el número formado K
al eliminar el P
dígito th (es decir I
) es divisible por I
.
Ejemplo y observaciones
324
es tal número:
3
divide24
2
divide34
4
divide32
Nota 1: suponemos que el número vacío es divisible por cualquier cosa, como 0
. Por lo tanto 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
y 9
son válidas.
Nota 2: K
no puede contener el dígito 0
, ya que no puede dividir por 0
.
Entradas y salidas
- Puede tomar la entrada como un argumento de función, a través
STDIN
, etc. - Puede devolver la salida de una función, a través de
STDOUT
, etc. - Puede indexar esos números a partir de
0
(en ese casoN >= 0
) o de1
(en ese casoN > 0
), lo que más le convenga.
Casos de prueba
Esos ejemplos están indexados desde 0
, así que si indexó desde 1
, luego agregue 1
a los números en la N
columna.
N Output
0 1
4 5
8 9
15 77
16 88
23 155
42 742
47 1113
121 4244
144 6888
164 9999
Puntuación
Este es el código de golf , por lo que gana la respuesta más corta en bytes.
code-golf
number
arithmetic
integer
Fatalizar
fuente
fuente
10000
números excluibles .100000
(1e5
) números excluibles .Respuestas:
Jalea ,
2119 bytesLa entrada está indexada en 1. Pruébalo en línea!
Cómo funciona
fuente
Pyth, 20
Pruébelo aquí o ejecute Test Suite
N está indexado en 1 para esta respuesta.
Utiliza en gran medida la misma lógica que mi script de Python. Las diferencias notables se utilizan
.D
para eliminar el dígito de la cadena durante la prueba y el manejo de excepciones para tratar con cero dígitos.fuente
Pyth, 26 bytes
Banco de pruebas.
fuente
Python 2, 93 bytes
Muy ineficiente La entrada está indexada en 1. Pruébalo en Ideone .
Versión alternativa, 100 bytes.
El código anterior realiza aproximadamente 10 x pruebas de divisibilidad donde solo se requiere x . A costa de sólo 7 bytes adicionales , la eficiencia puede mejorarse drásticamente, ya sea mediante la sustitución
*r
con*len(`r`)
o refactorización el código de la siguiente manera.Esto maneja todos los casos de prueba con facilidad, incluso en Ideone .
fuente
JavaScript (ES6),
827876 bytesLa entrada está indexada en 1. Funciona construyendo una cadena del formulario
false|'24'%3|'34'%2|'32'%4
y evaluándolo. Las cadenas se usan porque siguen siendo sintácticamente válidas en el caso de un solo dígito.La recursividad limita esto a aproximadamente n = 119. Versión iterativa para
888482 bytes:Editar: Guardado 2 bytes gracias a @ Dennis ♦.
fuente
"|'$`$''%$&"
Guarda dos bytes.Rubí, 90
Enfoque similar a la respuesta Javascript de Neil, pero significativamente más largo debido a la falta de conversión de tipo implícita (excepto que los booleanos se convierten en cadenas por
gsub
, lo cual es bueno).fuente
Ruby, 109 bytes
fuente
Hoon , 246 bytes
Sin golf:
Esto ... es realmente terrible. Me siento sucio por publicar esto.
Establezca
k
la forma de cadena del número actual, asigne sobre la lista[0...(length k)-1]
dividiendo la cadena en ese índice (a
). Obtenga ela
carácter, analícelo en un número y, si es,0
devuelva no. Obtenga el prefijo dea
y suelde a la otra mitad de la división, analice un número, verifique si el índice lo divide de manera uniforme.++levy
devuelve yes iff llamando a la función en todos los elementos de la lista también es yes. En este caso, la función++test
curry con yes, por lo que verifica que todos los caracteresk
funcionen.Si estamos en el valor 0, devolvemos el número actual, o de lo contrario repetimos con n decrementado (e incremento
x
)fuente