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 ntransforma el entero de entradanen una lista de dígitos.dde esta lista, verificamosd>1ymod n d<1, es decir, si seddividen.npordy aplicar de forma recursivaf:f$div n d.n.ny le devolvemosminimumla 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
.uniqdespués.digitsporque 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%zerodivisión por cero, por lo que el cortocircuito no funcionará. Además,0es un valor verdadero en ruby (los únicos valores falsey son falso y nulo).||s?>0, pero es el mismo recuento de caracteres.0viene 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 > 0con unN = Sen 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 den1~⍨- excluyendo1so/⍨- filtrado por0=⍵|⍨o- divisibilidad denpor 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 denpor 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