Para o objetivo deste desafio, um Poder Primário de um Primário (PPP) é definido como um número que pode ser definido como um número primo à potência de um número primo. Por exemplo, 9 é um PPP porque pode ser representado como 3 ^ 2. 81 por outro lado, não é um PPP, porque só pode ser representado como 3 ^ 4 e 4 não é primo. As primeiras PPPs são: 4, 8, 9, 25, 27, 32, 49, 121, 125, 128, 169, 243, 289, 343 ... Esta é a sequência O0IS A053810
Sua tarefa:
Escreva um programa ou função que, para um número inteiro de entrada n, retorne / produza a enésima PPP, indexada em 1 ou indexada em 0, conforme sua preferência.
Entrada:
Um número inteiro entre 0 e 1.000, recebido por qualquer método razoável.
Resultado:
A PPP no índice indicado pela entrada.
Casos de teste:
Eles são indexados em 1 e, portanto, se o seu programa receber entrada indexada em 0, a mesma saída deverá ser alcançada para a entrada declarada - 1.
3 -> 9
6 -> 32
9 -> 125
Pontuação:
Esse código de golfe , a menor pontuação em bytes, ganha!
Respostas:
05AB1E (herdado) ,
97 bytesGuardado 2 bytes graças a @KevinCruijssen
Experimente online!
fonte
»
, em vez deJ
por isso0\n1
não é interpretar como truthy! Mas você pode salvar um byte na versão herdada do 05AB1E (que você também usou no seu TIO), omitindo o½
, já que isso é feito implicitamente porµ
(segundo marcador nesta dica do meu 05AB1E ). Além disso,ʒĀ}
pode ser0K
. 7 bytesCasca , 10 bytes
Experimente online!
Explicação
fonte
Na verdade , 14 bytes
Baseado na solução Pyth do Sr. Xcoder . Sugestões de golfe são bem-vindas. Experimente online!
Ungolfing
fonte
Mathematica, 48 bytes
Experimente online!
mas Martin Ender teve uma ideia melhor e salvou 6 bytes
Mathematica, 42 bytes
Experimente online!
fonte
Union
vez deJoin
evitar oSort
.Outer
economiza outro byteArray
:(Union@@Outer[Power,p=Prime@Range@#,p])[[#]]&
Tuples
é ainda mais curto:Sort[Power@@@Prime@Range@#~Tuples~2][[#]]&
Geléia ,
121110 bytes1 byte graças a Dennis.
Experimente online!
fonte
Números R +, 57 bytes
Experimente online!
outer
é uma função tão útil.Bastante certo de que isso sempre funcionará. Farei um argumento formal quando tiver tempo.
fonte
Haskell ,
958580 bytes-10 bytes graças a @Lynn
-5 bytes graças a @WillNess
Baseado em 0
Experimente online!
Explicação
fonte
f=(!!)[x|x<-[2..],or[y^e==x|y<-p x,e<-p x]]
salva 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]]
. talvez esteja tudo bem, então, para não contar of=
? (nunca tenho certeza sobre as regras).f=
não deveria ser contado. Então serão 80 bytes, com(!!)[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()
vez de definir uma função.Experimente online!
fonte
i=[]
e....i+=[r]*....
for
r
ao invés dei[p]
Pitão , 15 bytes
Experimente aqui! ou Verifique mais casos de teste.
Explicação
fonte
Javascript
137133 bytes** algoritmo normal (resultado de 100 ms) P = n => {
fonte
APL (Dyalog Extended) , 15 bytes
Experimente online!
Explicação
fonte
Perl 6 , 50 bytes
Experimente online!
As razões para 24 e 7028 são que o maior valor (n = 1000) é 49378729, que é 7027 ^ 2, e a maior potência primária de 2, que se encaixa abaixo disso, é 23. Portanto, cobrindo 2..7027 ^ 2. 23 inclui todos os itens nos primeiros 1000 (e muitas peças de reposição).
fonte
Pitão - 13 bytes
Conjunto de Teste .
fonte
PARI / GP, 48 bytes
Se você não contar a
f(n)=
parte, isso é 43 bytes.Outra abordagem sem a notação de conjunto que não verifica tantos casos desnecessários:
fonte
Java 8, 211 bytes
Método muito ineficiente. Ele basicamente calcula todos os PPPs de 2 2 a
999 999132 132 e o armazena em uma Lista, depois classifica essa Lista e, em seguida, obtém on
'ésimo item dessa Lista.EDIT: Em vez de usar 999 999 que resulta em uma lista de 28.225 itens, agora uso 132 132 que resulta em uma lista de apenas 1.024 itens. Isso melhora bastante o desempenho e é perfeitamente aceitável, pois o desafio afirma que devemos apoiar uma entrada do índice 0 a 1.000. (Mudando
1e3
para132
Porém, não afeta a contagem de bytes.Explicação:
Experimente aqui.
fonte
J, 21 bytes
Função anônima indexada a zero.
Experimente online!
Tentando voltar às coisas, mas parece que esqueci todos os truques para criar boas cadeias monádicas.
Breve explicação
Constrói uma tabela de potências primárias do 0º prime ao prime no índice da entrada mais 1 (para contabilizar 0). Nivela esta lista, classifica-a e depois indexa-a. Agora percebo que isso pode dar resultados incorretos para alguns valores, já que a tabela pode não ser grande o suficiente - nesse caso, eu editaria em um valor codificado como 1e4, o que deve ser suficiente. Não posso provar isso de um jeito ou de outro (ele passa nos casos de teste fornecidos), então, deixe-me saber se isso é um problema.
Também 21 bytes
fonte