JE Maxfield demostró el siguiente teorema (ver DOI: 10.2307 / 2688966 ):
Si es un entero positivo que tiene dígitos, existe un entero positivo tal que los primeros dígitos de constituyen el entero .
Reto
Su desafío se le da un poco de encontrar un .
Detalles
- representa el factorial de .
- Los dígitos de en nuestro caso se entienden en la base .
- Su envío debe funcionar para dado suficiente tiempo y memoria. Simplemente usar, por ejemplo, tipos de 32 bits para representar enteros no es suficiente.
- No necesariamente necesita generar la N mínima posible .
Ejemplos
A N
1 1
2 2
3 9
4 8
5 7
6 3
7 6
9 96
12 5
16 89
17 69
18 76
19 63
24 4
72 6
841 12745
206591378 314
El menos posible para cada se puede encontrar en https://oeis.org/A076219
Respuestas:
Python 2 , 50 bytes
Pruébalo en línea!
Esta es una variación de la solución de 47 bytes explicada a continuación, ajustada para devolver la
1
entrada'1'
. (Es decir, agregamos1
a la expresión completa en lugar de la llamada recursiva, y comenzamos a contarn==2
para eliminar una capa de profundidad, equilibrando el resultado para todas las no'1'
entradas).Python 2 , 45 bytes (asigna 1 a
True
)Esta es otra variación, de @Jo King y @xnor, que toma la entrada como un número y devuelve la
True
entrada1
. Algunas personas piensan que este es un juego justo, pero personalmente lo encuentro un poco extraño.Pero cuesta solo 3 bytes envolver el resultado booleano repugnante
+()
, dándonos una solución "agradable" más corta:Python 2 , 48 bytes
fuente
+1
todos modos.a
como número.-a
en-p
'', es un buen truco :)Brachylog ,
35 bytesPruébalo en línea!
Toma entrada a través de su variable de salida y emite a través de su variable de entrada. (Al revés, solo encuentra prefijos arbitrarios del factorial de entrada, que no es tan interesante). Se agota el tiempo del último al último caso de prueba en TIO, pero funciona bien en el último . Lo he estado ejecutando en 841 en mi computadora portátil durante varios minutos al momento de escribir esto, y aún no ha escupido una respuesta, pero tengo fe en ello.
¡Ya que la única entrada
ḟa₀
no funciona es 1, y 1 es un prefijo positivo de 1! = 1,1|ḟa₀
funciona igual de bien.Además, a partir de esta edición, 841 ha estado funcionando durante casi tres horas y todavía no ha producido una salida. Supongo que calcular el factorial de cada número entero de 1 a 12745 no es exactamente rápido.
fuente
C ++ (gcc) ,
10795 bytes, usando-lgmp
y-lgmpxx
Gracias a la gente en los comentarios por señalar algunos percances tontos.
Pruébalo en línea!
Computamultiplicandopor , luego lo divide repetidamente por hasta que ya no sea mayor que el entero pasado. En este punto, el ciclo termina si el factorial es igual al entero pasado, o de lo contrario pasa al siguiente .n! (n−1)! n 10 n
fuente
107
bytes.return
?Jalea , 8 bytes
Pruébalo en línea!
Toma un número entero y devuelve un singleton.
fuente
05AB1E , 7 bytes
Pruébelo en línea o verifique -casi- todos los casos de prueba (se
841
agota el tiempo, por lo que está excluido).Explicación:
fuente
Pyth - 8 bytes
Pruébalo en línea .
fuente
JavaScript,
4743 bytesSalida como un BigInt.
¡Pruébelo en línea!
Ahorró unos pocos bytes al adoptar el enfoque de Lynn de "construir" el factorial en lugar de calcularlo en cada iteración, así que por favor vote su solución también si está votando esta.
fuente
_Ês bU}f1
en Japt no funcionas
.1
if0
para devolverlon=1
.x=i=1n;f=n=>`${x*=++i}`.search(n)?f(n):i
C # (.NET Core) , 69 + 22 = 91 bytes
Pruébalo en línea!
Usos
System.Numerics.BigInteger
que requieren unausing
declaración.-1 byte gracias a @ExpiredData!
fuente
Jalea , 16 bytes
Pruébalo en línea!
Explicación
fuente
Perl 6 , 23 bytes
Pruébalo en línea!
Explicación
fuente
Carbón , 16 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Empuje
1
a la lista vacía para que comience con un producto definido.Repita mientras no se puede encontrar la entrada al principio del producto de la lista ...
... empuje la longitud de la lista a sí misma.
Imprima el último valor empujado a la lista.
fuente
Perl 5
-Mbigint -p
, 25 bytesPruébalo en línea!
fuente
J ,
2822 bytes-6 bytes gracias a FrownyFrog
Pruébalo en línea!
respuesta original J , 28 bytes
Pruébalo en línea!
>:@] ... x:@1
comenzando con una precisión extendida1
, siga incrementándola mientras ...-.@
no es el caso de que ...{.@
el primer olmo es un partido inicial de ...E.&":
todas las coincidencias de subcadenas (después de seleccionar ambos argumentos&":
) de la búsqueda de la entrada original en ...!
el factorial del número que estamos incrementandofuente
(]+1-0{(E.&":!))^:_&1x
C (gcc) -lgmp, 161 bytes
Pruébalo en línea!
fuente
strstr(b=mpz_get_str(0,10,_),a)-b;mpz_mul(_,_,n))mpz_add_ui(n,n,1)
lugar deb=mpz_get_str(0,10,_),strstr(b,a)-b;mpz_add_ui(n,n,1),mpz_mul(_,_,n))
Python 3 , 63 bytes
Pruébalo en línea!
-24 bytes gracias a Jo King
-3 bytes gracias a Chas Brown
fuente
f=
que se supone que lo que tienes en el encabezado cuenta para tu conteo de bits.Jalea , 11 bytes
Pruébalo en línea!
fuente
Limpio , 88 bytes
Pruébalo en línea!
Define
$ :: Integer -> Integer
.Utiliza
Data.Integer
enteros de tamaño arbitrario para IO.fuente
Wolfram Language (Mathematica) , 62 bytes
Pruébalo en línea!
fuente
Rubí , 40 bytes.
Pruébalo en línea!
fuente
Icono ,
6563 bytesPruébalo en línea!
fuente
Haskell, 89 bytes
Si alguien sabe cómo omitir la importación requerida, avíseme.
fuente