La iteración de potencia mínima de un número se define de la siguiente manera:
Es decir, elevado al dígito más bajo en . Por ejemplo, y .
La raíz de potencia mínima de un número se define como el número obtenido al aplicar repetidamente hasta que se encuentre un punto fijo. Aquí hay una tabla de las raíces de potencia mínima de los números entre 1 y 25:
n MPR(n)
--------------------------
1 1
2 1
3 531441
4 1
5 3125
6 4738381338321616896
7 1
8 16777216
9 1
10 1
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 1
21 21
22 1
23 279841
24 1
25 1
Desafío: genere los números cuya raíz de potencia mínima no sea igual a 1 o en sí misma.
Aquí están los primeros 50 números en esta secuencia:
3, 5, 6, 8, 23, 26, 27, 29, 35, 36, 39, 42, 47, 53, 59, 64, 72, 76, 78, 82, 83, 84, 92, 222, 223, 227, 228, 229, 233, 237, 239, 254, 263, 267, 268, 269, 273, 276, 277, 278, 279, 285, 286, 287, 289, 296, 335, 338, 339, 342
Reglas
- Puede generar los primeros
n
números de esta secuencia (indexados 0 o 1), generar eln
término th, crear un generador que calcule estos términos, generar infinitos de ellos, etc. - Puede tomar entrada y dar salida en cualquier base, pero los cálculos para MPR deben estar en base 10. Por ejemplo, puede tomar entrada
###
(en unario) y salida### ##### ######
(en unario) - Usted debe dar números. No puede (p. Ej.) Salida
"3", "5", "6"
, ya que son cadenas.3, 5, 6
y3 5 6
ambos son válidos, sin embargo. La salida2 3
,"23"
otwenty-three
todos se consideran representaciones no válidas del número23
. (Nuevamente, puede usar cualquier base para representar estos números). - Este es un código de golf , por lo que gana el código más corto (en bytes).
Respuestas:
05AB1E , 8 bytes
Genera el enésimo número 1 -indexado
Pruébalo en línea!
Explicación
Opcionalmente como una lista infinita en el mismo conteo de bytes:
Pruébalo en línea!
fuente
µ
yΔ
justo después de que se publicara el desafío y obtuve exactamente la misma respuesta, pero me preguntaba por qué no funcionó ... Utilicé enD
lugar deÐ
porque pensé que una copia habría sido utilizada por la función de punto fijo y el otro por la función más pequeña que, pero no tuve en cuenta que necesitaba otra copia. Gracias, Emigna, por resolver mi Enimga.Perl 6 , 49 bytes
Pruébalo en línea!
Devuelve una secuencia infinita. Supongo que la siguiente versión de 45 bytes también funciona, pero no puedo probar que el punto fijo siempre se encuentre después de n iteraciones.
fuente
J ,
413937 bytesPruébalo en línea!
Este es un programa completo que imprime la secuencia infinita. Una ocasión muy rara en la que un programa completo supera un verbo en J.
Cómo funciona
J ,
4139 bytesPruébalo en línea!
Un verbo monádico. Dado un índice basado en 1, devuelve el número en ese índice. El pie de página verifica que los primeros 20 términos sean correctos.
Al leer la palabra "punto fijo", inmediatamente pensé "Oh, sí,
^:_
hará el gran trabajo". Luego terminé con esta abominación de rostros enojados y tristes. Y ni siquiera es un tren, es un solo verbo .Ungolfed y cómo funciona
El entero de precisión arbitraria
0x
es necesario para calcular el punto fijo con precisión, por ejemplo, del número 6.fuente
^:
, mi cabeza comienza a doler en el segundo de ellos :)(>:[(<(^{.@/:~&.":)^:_)echo])^:_]1x
_&(_&(]]+]>:(^{.@/:~&.":)^:_)>:)*
tomando la entrada como un entero extendidoPyth , 10 bytes
Pruébalo en línea!
GZZQ
.f
Q
u^GshS`G
Z
El código raíz de potencia mínima funciona al encontrar un punto fijo
u
de elevar el número actualG
a la potencia de su dígito mínimo, que es el mismo que el primer dígito (h
) ordenado lexicográficamente (S
), y luego convertido de nuevo a un entero (s
).fuente
Jalea , 10 bytes
Un enlace monádico que toma un número entero
I
, de STDIN, que produce las primerasI
entradas.Pruébalo en línea!
(
*DṂƊƬṪ%@µ#
funciona para 10 también)¿Cómo?
Cuenta comenzando
n=0
hasta que seinput
encuentren resultados verdaderos de una función monádica y produzca esosn
s.La función aplica repetidamente otra función monádica que comienza
x=n
y recopila los valores dex
hasta que los resultados ya no sean únicos. (por ejemplo:19
rendimientos[19]
;23
rendimientos[23,529,279841]
;24
rendimientos[24, 576, 63403380965376, 1]
; etc.) y luego quita el resultado (elimina el valor situado más a la izquierda), complementa todos los valores (1-x
) y utilizaȦ
para producir0
cuando hay un cero en la lista o si está vacío.La función más interna eleva la corriente
x
a todos los dígitos dex
y luego mantiene el mínimo (hacer esto es un ahorro de bytes sobre la búsqueda del dígito mínimo primero).fuente
ƬḊCȦ
allá. :-)Ṫ>
recoge0
:(Mathematica,
5951 bytes-8 bytes gracias a Misha Lavrov .
Pura función. Toma un número como entrada y devuelve la lista de términos hasta ese número como salida. Nada muy complicado aquí.
fuente
FixedPoint
generalmente no es tan bueno como//.
(abreviatura deReplaceRepeated
) en el código de golf. Aquí, podemos guardar algunos bytes conSelect[Range@#,1<(#//.x_:>x^Min@IntegerDigits@x)!=#&]&
.Select[Range@#,#<(#//.x_:>x^Min@IntegerDigits@x)&]&
.Python 3 ,
9088 bytes-2 bytes por @mypetlion
Pruébalo en línea!
print
como una expresión ahorra dos bytes sobre el uso de laif
declaración en Python 2.F
calcula el punto de fijación MPI; el resto le da la secuencia infinita a STDOUT.fuente
return m>x and F(m)or m
areturn[int,F][m>x](m)
para guardar 2 bytes.Haskell,
6762 bytesDevuelve una lista infinita.
Pruébalo en línea!
fuente
Ruby , 52 bytes
Pruébalo en línea!
Imprime secuencia infinita
fuente
$.
lugar dex
, guarda la inicialización)Java 10,
178173bytesEl puerto de la respuesta de Ruby de @GB , también se imprime indefinidamente.
Pruébalo en línea.
Explicación:
fuente
JavaScript (Node.js) , 75 bytes
Pruébalo en línea!
fuente
JavaScript (Node.js) ,
98908986 bytes-3 bytes gracias @Conor O'Brien
Pruébalo en línea!
¿Parece que un generador es más corto que devolver una matriz de
n
números?O imprimiendo infinitamente - 72 bytes
Pruébalo en línea!
fuente
if(x>n)yield n
ax>n&&(yield n)
como expresión)Jalea , 14 bytes
Pruébalo en línea!
fuente
JavaScript (Chrome),
7877 bytesPruébalo en línea!
Puerto de mi propia solución Python 3 . La última versión de Chrome es compatible
BigInt
(probado en mi PC). Sin embargo, no intente este código tal como está en su navegador.fuente
Raqueta ,
270, 257233 bytesPruébalo en línea!
Esta es mi primera presentación de Racket , por lo que definitivamente se puede jugar mucho más. Sin embargo, estoy algo contento, al menos por lograr resolver la tarea.
Más legible:
fuente
Axioma, 168 bytes
La función para usarlo es z (); aquí imprime números que tienen la correspondencia de un número no 1, no en sí mismo y son menores que su argumento.
fuente
Visual Basic .NET (.NET Core) , 290 bytes (incluye importaciones)
Pruébalo en línea!
Requiere la siguiente importación:
Esto usa una función de iterador para devolver una lista infinita de enteros que cumple con los criterios. Se utiliza
BigInteger
para evitar restricciones de tamaño, particularmente con cálculos intermedios.Sin golf:
fuente
Lisp común , 238 bytes
Pruébalo en línea!
fuente
APL (NARS), 96 caracteres, 192 bytes
prueba (el resultado parcial para el argumento 22 parece demasiado grande, por lo que <21 argumentos no sé si puede estar bien)
fuente
Python 3 , 102 bytes
Pruébalo en línea!
Decidí probar una solución de Python 3 que imprime directamente el enésimo término en la secuencia.
fuente
C (clang) +
-DL=long long
-lm
, 213 bytesPruébalo en línea!
La función
g(j)
imprime los primerosj
términos de la secuencia.fuente
a=...
para guardar una docena de bytes.x>1
en lugar dex!=1&x>0
.Casco ,
161210 bytesGuardado 6 bytes gracias a H.PWiz.
Pruébalo en línea!
Explicación
fuente
>¹
aquí conS>
. Esto le permite ponerlo todo en una línea. Además, parece que te fuiste por error en el enlace tio anteriorJapt , 44 bytes
Pruébalo en línea!
Sustancialmente diferente de la otra respuesta de Japt.
Explicación:
En términos de posibilidades futuras de golf, hago muchas llamadas manuales a una función en un número, que sospecho que podría reducirse, pero no estoy seguro de cómo.
fuente