Un número pandigital es un número entero que contiene cada dígito del 0 al 9 al menos una vez. 1234567890, 1902837465000000 y 9023289761326634265 son todos pandigitales. Para los propósitos de este desafío, números como 123456789 no son pandigitales, ya que no contienen un 0, aunque 123456789 = 0123456789.
Un par diverso de enteros es un par de enteros modo que es pandigital. se llama el exponente diversificador .
Desafío: dado un número entero , encuentre el exponente diversificador correspondiente más pequeño . Este es un código de golf , por lo que gana el programa más corto en bytes.b
(Puede suponer que existe tal exponente, es decir, su programa no recibirá una entrada no válida, como una potencia de 10).
Su solución debe poder manejar como mínimo los casos de prueba dados, pero en teoría debería manejar todas las entradas válidas.
Este es A090493 en OEIS.
Casos de prueba
2 -> 68
3 -> 39
4 -> 34
5 -> 19
6 -> 20
7 -> 18
8 -> 28
9 -> 24
11 -> 23
12 -> 22
13 -> 22
14 -> 21
15 -> 12
16 -> 17
17 -> 14
18 -> 21
19 -> 17
20 -> 51
21 -> 17
22 -> 18
23 -> 14
24 -> 19
25 -> 11
26 -> 18
27 -> 13
28 -> 11
29 -> 12
30 -> 39
31 -> 11
32 -> 14
33 -> 16
34 -> 14
35 -> 19
36 -> 10
1234567890 -> 1
1234567890 -> 1
.123456789
contar como pandigital? Es igual a0123456789
, que definitivamente es pandigital.Respuestas:
Brachylog (v2), 9 bytes
Pruébalo en línea!
Esta es una presentación de función. El enlace TIO contiene un contenedor que convierte una función en un programa completo.
Explicación
fuente
Python 2 , 44 bytes
La entrada debe ser larga, ya que se
`k`
comporta de manera diferente para longs e ints.Pruébalo en línea!
fuente
Perl 6 , 32 bytes
Pruébalo en línea!
Bastante autoexplicativo.
Explicación
fuente
JavaScript (Node.js) ,
51 4643 bytesToma la entrada como un literal BigInt. Devuelve verdadero en lugar de 1 .
Pruébalo en línea!
fuente
Ruby , 41 bytes
Pruébalo en línea!
fuente
Haskell, 50 bytes
Pruébalo en línea!
Mismo recuento de bytes:
fuente
J , 25 bytes
Pruébalo en línea!
Solo verbo monádico. La entrada debe ser un número entero de precisión extendida (por ejemplo
2x
).Cómo funciona
fuente
(]+10>#@=@":@^)^:_*
Tcl , 82 bytes
Pruébalo en línea!
fuente
llength
82 bytesRaqueta ,
11096 bytes-14 bytes gracias a UltimateHawk!
Pruébalo en línea!
fuente
(define(f n[b 1])(if(= 10(length(remove-duplicates(string->list(~v(expt n b))))))b(f n(+ b 1))))
Python 3 ,
5247 bytesgracias a @BMO
Pruébalo en línea!
fuente
05AB1E (legado) ,
109 bytesGuardado 1 byte gracias al Sr. Xcoder
Pruébalo en línea!
Explicación
fuente
1µINmÙgTQ
- ¡ Pruébalo en línea!N
entonces. ¡Gracias!Carbón de leña , 19 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Empuje repetidamente la cadena vacía a la lista vacía hasta que no haya dígitos que la potencia de la entrada a la longitud de la lista no contenga.
Imprime la longitud de la lista.
fuente
K (ngn / k) , 76 bytes
Pruébalo en línea!
{
}
funcionar con argumentox
|(99#10)\x
representamos los números como listas invertidas de 99 dígitos decimales; haga eso con el argumentoa::
asignar a variable globala
(k no tiene cierres. Necesitamosa
ser globales para poder usarlo en subfunciones){
}{
}\
mientras la primera función devuelve falsey, sigue aplicando la segunda función (también conocida como bucle while), conservando los resultados intermediosa*\:x
cada uno dea
los dígitos multiplicado por cada uno dex
los dígitos ("producto externo")99 99#a*\:x,0
agregue una columna adicional de 0s y vuelva a formar de nuevo a 99x99, esto desplaza la i-ésima fila por i elementos a la derecha, insertando 0s a la izquierda (esto funciona para las pruebas, para entradas más grandes 99x99 podría provocar desbordamientos)+/
suma{+/2 99#,/|0 10\x,0}/
propagar llevar:{
}/
seguir aplicando hasta la convergencia0 10\x
divmod por 10 (un par de listas)|0 10\x
moddiv por 102 99#,/|0 10\x,0
moddiv por 10, con la parte "div" desplazada 1 dígito a la derecha+/
suma{10>#?(+/|\0<|x)#x}
- comprobar para (no) pandigital:|x
marcha atrásx
0<
qué dígitos no son cero|\
maxima parcial+/
sum: esto cuenta el número de ceros iniciales enx
10>
son menos de 10?#
longitud de la secuencia de poderes: este es el resultadofuente
PowerShell , 107 bytes
Pruébalo en línea!
Bastante sencillo, es una pena que necesitemos usar en
[bigint]
todas partes. Tomamos entrada$a
, luego configuramos unfor
bucle con inicializador$b=1
.Cada iteración que incrementamos
$b
después de verificar si$a ^ $b
(víapow
) enviót
oCharArray
,sort
ed con la-u
bandera nique, a continuación,-join
ed juntos en una cadena es-n
ote
qual a la gama0..9
también-join
ed en una cadena.Eso es un bocado. Por ejemplo, esto compararía
7 ^ 5 = 16807 --> "01678"
con"0123456789"
, determinaría que no son iguales y continuaría el ciclo.Una vez que estamos fuera del ciclo, hemos determinado cuál se
$b
adapta a nuestra entrada, y así lo dejamos en la tubería. La salida es implícita.fuente
Java, 108 bytes
Pruébalo en línea!
Explicación
Fuerza bruta, haciendo un bucle a ^ b hasta que encuentre una cadena con 10 (o más, pero eso es imposible ya que solo habrá 0 a 9) caracteres únicos.
BigDecimal
se requiere tanto porqueMath.pow
no es lo suficientemente preciso (falla en el caso11
) como porque la conversiónDouble
de una cadena a una cadena predeterminada muestra notación científica, lo que rompe este método de encontrar un número pandigital.fuente
new java.math.BigDecimal(a).pow(++b).toString()
a(new java.math.BigDecimal(a).pow(++b)+"")
(y el punto y coma final no tiene que contarse para las funciones lambda). Pruébelo en líneaPyth,
108 bytesPruébelo en línea aquí .
Guardado 2 bytes gracias a FryAmTheEggman, código anterior
fq;l{j^QT;
fuente
T
operación de energía.Jalea ,
1211 bytesPruébalo en línea!
Cómo funciona
fuente
Limpio ,
107101 bytesPruébalo en línea!
Toma entrada como
Integer
, devuelveInt
fuente
Wolfram Language (Mathematica) , 48 bytes
Pruébalo en línea!
fuente
Adjunto , 27 bytes
Pruébalo en línea!
Explicación
Alternativas
28 bytes:
${Generate{Unique@S[x^_]@9}}
29 bytes:
${Generate{Unique[S[x^_]]@9}}
30 bytes:
${Generate{#Unique[S[x^_]]>9}}
31 bytes:
Generate@${{#Unique[S[x^_]]>9}}
32 bytes:
${Generate[{#Unique[S[x^_]]>9}]}
33 bytes:
${If[#Unique[x^y]>9,y,x&$!-~y]}&0
34 bytes:
${If[#Unique[x^y]>9,y,$[x,y+1]]}&0
fuente