Comenzando con un número entero positivo N , encuentre el número entero más pequeño N ' que se puede calcular dividiendo repetidamente N por uno de sus dígitos (en base-10). Cada dígito seleccionado debe ser un divisor de N mayor que 1 .
Ejemplo 1
La salida esperada para N = 230 es N '= 23 :
Ejemplo # 2
La salida esperada para N = 129528 es N '= 257 :
¡Cuidado con los caminos no óptimos!
Podríamos comenzar con 129528/9 = 14392 , pero eso no llevaría al resultado más pequeño posible. Lo mejor que podemos hacer si primero dividimos entre 9 es:
Reglas
- La entrada se puede tomar en cualquier formato razonable (entero, cadena, matriz de dígitos, ...).
- Este es el código de golf , por lo que gana la respuesta más corta en bytes.
Casos de prueba
1 --> 1
7 --> 1
10 --> 10
24 --> 1
230 --> 23
234 --> 78
10800 --> 1
10801 --> 10801
50976 --> 118
129500 --> 37
129528 --> 257
8377128 --> 38783
655294464 --> 1111
code-golf
integer
optimization
division
Arnauld
fuente
fuente
Respuestas:
Haskell ,
6761 bytesPruébalo en línea!
Explicación:
read.pure<$>show n
transforma el entero de entradan
en una lista de dígitos.d
de esta lista, verificamosd>1
ymod n d<1
, es decir, si sed
dividen
.n
pord
y aplicar de forma recursivaf
:f$div n d
.n
.n
y le devolvemosminimum
la lista.fuente
Jalea , 8 bytes
Pruébalo en línea!
Versión alternativa, mucho más rápida, 9 bytes.
Pruébalo en línea!
Cómo funciona
fuente
Python 2 , 59 bytes
Pruébalo en línea!
fuente
rubí ,
5247 bytes¡Compitiendo por el grupo de idiomas no exóticos! (Nota: una buena idea, si no es golf, es agregar
.uniq
después.digits
porque todas las ramas similares tienen resultados similares)Pruébalo en línea!
Explicación
fuente
x<2|n%x?n:f[n/x]
para guardar dos o tres bytes (dependiendo de si necesita uno|
o dos)?value%zero
división por cero, por lo que el cortocircuito no funcionará. Además,0
es un valor verdadero en ruby (los únicos valores falsey son falso y nulo).||
s?>0
, pero es el mismo recuento de caracteres.0
viene si no lo estás usando|
.Lisp común , 136 bytes
Pruébalo en línea!
Versión legible:
fuente
Jalea , 21 bytes
Pruébalo en línea!
fuente
Wolfram Language (Mathematica) , 44 bytes
-7 bytes gracias a Misha Lavrov.
Pruébalo en línea!
fuente
⋂
carácterIntersection
. Pero hay casos grandes que ya no puede manejar porque se queda sin generación de memoriaRange[#-1]
.Most@Divisors@#
lugar deRange[#-1]
evitar el problema de memoria, pero el resultado es 49 bytes .JavaScript (Firefox 30-57), 49 bytes
Versión compatible con ES6, 52 bytes:
Originalmente intenté filtrar dígitos irrelevantes, pero resulta ser un poco más largo a 54 bytes:
fuente
Kotlin ,
10099 bytesEmbellecido
Prueba
Ediciones
fuente
Jalea , 15 bytes
Pruébalo en línea!
Debo admitir que la
߀
parte está tomada de la respuesta de Erik . El resto se desarrolla por separado, en parte porque ni siquiera entiendo cómo funciona el resto de esa respuesta de todos modos: P.¿Cómo funciona?
* Estoy gratamente sorprendido de que
¡
funcione así en las listas, porque su significado normal es aplicar esto n veces .Después explicó Dennis por eso
߀
no necesita un condicional, tenemos este 12-byter , o su versión de 8 bytes: P.fuente
R ,
10198 bytesPruébalo en línea!
Una tonelada de bytes se destina a extraer los dígitos y cuáles se dividen
x
; Quizás otro enfoque sea necesario.fuente
Excel Vba, 153 bytes
Primer código de golf en el único idioma que conozco :( No es exactamente amigable para el golf ...
Llama así:
No tengo idea de dónde probar esto en línea.
fuente
And N > 0
con unN = S
en una línea anterior. (Además, si tuviera una forma de probarlo, mi primer instinto sería verificar si se pueden eliminar algunos de los espacios).APL (Dyalog) , 33 bytes
Pruébalo en línea!
¿Cómo?
⍎¨⍕⍵
- agarrar dígitos den
1~⍨
- excluyendo1
so/⍨
- filtrado por0=⍵|⍨o
- divisibilidad den
por el dígito⍬≡...:⍵
- si está vacío, regresen
⌊/
- de lo contrario, devolver un mínimo de∇¨
- recursividad para cada número en⍵÷d
- la división den
por cada uno de los dígitos filtrados arribafuente
Perl 5, 87 + 1 (
-p
) = 88 bytespruébalo en línea
fuente
PHP, 120 bytes
Pruébalo en línea!
fuente
Pari / GP , 49 bytes
Pruébalo en línea!
fuente