Para el propósito de este desafío, una potencia primaria de una prima (PPP) se define como un número que se puede definir como un número primo de la potencia de un número primo. Por ejemplo, 9 es un PPP porque se puede representar como 3 ^ 2. 81 por otro lado no es un PPP porque solo se puede representar como 3 ^ 4, y 4 no es primo. Las primeras PPP son: 4, 8, 9, 25, 27, 32, 49, 121, 125, 128, 169, 243, 289, 343 ... Esta es la secuencia OEIS A053810
Tu tarea:
Escriba un programa o función que, para un número entero de entrada, n devuelva / produzca el enésimo PPP, ya sea 1 indexado o 0 indexado, lo que prefiera.
Entrada:
Un entero entre 0 y 1,000, recibido a través de cualquier método razonable.
Salida:
El PPP en el índice indicado por la entrada.
Casos de prueba:
Estos están indexados en 1 y, por lo tanto, si su programa toma una entrada indexada en 0, se debe llegar a la misma salida para la entrada establecida: 1.
3 -> 9
6 -> 32
9 -> 125
Puntuación:
¡Este código de golf , gana la puntuación más baja en bytes!
Respuestas:
05AB1E (legado) ,
97 bytesGuardado 2 bytes gracias a @KevinCruijssen
Pruébalo en línea!
fuente
»
lugar deJ
modo0\n1
que no se interprete como Truthy! Pero puede guardar un byte en la versión heredada de 05AB1E (que también usó en su TIO), omitiendo el½
, ya que esto se hace implícitamente paraµ
(segundo punto de viñeta en este consejo mío de 05AB1E ). Además,ʒĀ}
puede ser0K
. 7 bytesCasco , 10 bytes
Pruébalo en línea!
Explicación
fuente
Realmente , 14 bytes
Basado en la solución Pyth del Sr. Xcoder . Sugerencias de golf bienvenidas. Pruébalo en línea!
Ungolfing
fuente
Mathematica, 48 bytes
Pruébalo en línea!
pero Martin Ender tuvo una mejor idea y ahorró 6 bytes
Mathematica, 42 bytes
Pruébalo en línea!
fuente
Union
lugar deJoin
evitar elSort
.Outer
ahorra otro byteArray
:(Union@@Outer[Power,p=Prime@Range@#,p])[[#]]&
Tuples
es aún más corto:Sort[Power@@@Prime@Range@#~Tuples~2][[#]]&
Jalea ,
121110 bytes1 byte gracias a Dennis.
Pruébalo en línea!
fuente
Números R +, 57 bytes
Pruébalo en línea!
outer
Es una función tan útil.Bastante seguro de que esto siempre funcionará. Haré una discusión formal cuando tenga tiempo.
fuente
Haskell ,
958580 bytes-10 bytes gracias a @Lynn
-5 bytes gracias a @WillNess
Basado en 0
Pruébalo en línea!
Explicación
fuente
f=(!!)[x|x<-[2..],or[y^e==x|y<-p x,e<-p x]]
ahorra 10 bytes.f=(!!)[x|x<-[2..],p<-[[i|i<-[2..x],all((>)2.gcd i)[2..i-1]]],or[y^e==x|e<-p,y<-p]]
. tal vez está bien entonces no contar elf=
? (Nunca estoy seguro de las reglas).f=
, no debería contarse. Entonces serán 80 bytes, con(!!)[x|x<-[2..],p<-[[i|i<-[2..x],all((>)2.gcd i)[2..i-1]]],or[y^e==x|e<-p,y<-p]]
.Python 2 ,
163157137136 bytesinput()
lugar de definir una función.Pruébalo en línea!
fuente
i=[]
y....i+=[r]*....
for
r
lugar dei[p]
Pyth , 15 bytes
Pruébalo aquí! o Verificar más casos de prueba.
Explicación
fuente
Javascript
137133 bytes** algoritmo normal (resultado de 100 ms) P = n => {
fuente
APL (Dyalog Extended) , 15 bytes
Pruébalo en línea!
Explicación
fuente
Perl 6 , 50 bytes
Pruébalo en línea!
Las razones para el 24 y 7028 son que el valor más grande (n = 1000) es 49378729, que es 7027 ^ 2, y la mayor potencia prima de 2 que se ajusta por debajo es 23. Entonces, cubriendo 2..7027 ^ 2 .. 23 incluye todos los artículos en los primeros 1000 (y muchos repuestos).
fuente
Pyth - 13 bytes
Test Suite .
fuente
PARI / GP, 48 bytes
Si no cuentas el
f(n)=
parte, son 43 bytes.Otro enfoque sin la notación establecida que no verifica tantos casos innecesarios:
fuente
Java 8, 211 bytes
Método muy ineficiente. Básicamente, calcula todos los PPP del 2 2 al
999 999132 132 y los almacena en una Lista, luego los ordena y luego obtiene eln
'ítem de esa Lista.EDITAR: en lugar de usar 999 999 que da como resultado una Lista de 28,225 artículos, ahora uso 132 132 que da como resultado una Lista de solo 1,024 artículos. Esto mejora bastante el rendimiento y es perfectamente aceptable ya que el desafío establece que debemos admitir una entrada del índice 0 al 1,000. (Sin embargo, cambiar
1e3
a132
no afecta el recuento de bytes).Explicación:
Pruébalo aquí
fuente
J, 21 bytes
Función anónima indexada a cero.
Pruébalo en línea!
Intento volver al ritmo de las cosas, pero parece que he olvidado todos los trucos para hacer buenas cadenas monádicas.
Explicación breve
Construye una tabla de potencias primarias desde la prima 0 hasta la prima en el índice de la entrada más 1 (para dar cuenta de 0). Aplana esta lista, la ordena y luego la indexa. Ahora me doy cuenta de que esto podría dar resultados incorrectos para algunos valores, ya que la tabla podría no ser lo suficientemente grande; en ese caso, editaría en un valor codificado como 1e4 que debería ser suficiente. No puedo probarlo de una forma u otra (pasa por los casos de prueba dados), así que avíseme si esto es un problema.
También 21 bytes
fuente