Inverta seu código, inverta o OEIS

11

A tarefa aqui é escrever um programa que leva um número natural, , e produz o º prazo de uma seqüência OEIS. Essa sequência deve ter um identificador na forma de seguido por 6 dígitos. Agora, quando você pega seu código-fonte e inverte a ordem de seus bytes para produzir um novo programa, esse programa também deve implementar uma sequência OEIS. A nova sequência deve ser identificada por um seguido pelos mesmos 6 dígitos da última vez, mas na ordem inversa (incluindo zeros à esquerda).nnAA

Agora, para evitar que as coisas sejam triviais, nem o número do identificador OEIS nem o seu programa podem ser palíndromos. Essa é a sequência e os programas devem ser diferentes. Você não pode escolher uma sequência cuja inversão não existe ou está vazia.

Para cada uma de suas seqüências, você pode optar por usar a indexação 0 ou 1. Eles não precisam usar a mesma indexação. Como algumas seqüências OEIS têm um domínio limitado, você só precisa gerar os números corretos para o domínio da sequência. Seu comportamento necessário é indefinido fora do domínio (você pode produzir 0, travar, pedir uma pizza etc.).

Isso é então as respostas serão pontuadas em bytes, com menos bytes sendo melhores.

Post Rock Garf Hunter
fonte
Os zeros à esquerda são incluídos na reversão do número de sequência?
Julio
1
@pppery Eles precisam ser, pois os números OEIS têm exatamente 6 dígitos. (também diz isso explicitamente na pergunta)
Jo rei
Podemos pegar a entrada (índice) como uma string?
586 TFeld

Respostas:

4

Perl 6 , 55 bytes (A055642 e A246550)

+*.comb#}]1-_$[)4+_$^**X]_$^[)*..2,emirp-si&(perg(tros{

Experimente online!

n

{sort(grep(&is-prime,2..*)[^$_]X**^$_+4)[$_-1]}#bmoc.*+

Experimente online!

xexe4

A maior parte desse desafio foi apenas encontrar uma boa sequência com um reverso não muito complicado.

Atualização: usando a resposta do torcado , isso pode ter 19 bytes (A010851 e A158010)

{256*$_**2-$_}#{21}

Experimente online!

Brincadeira
fonte
2

\ / \ /> , 15 14 bytes ( A010851 e A158010 )

cn;n*-1*"Ā":j

efetivamente cn, saída 12

j:"Ā"*1-*n;nc

efetivamente j:"Ā"*1-*n, n (256n-1)

obrigado a um amigo por encontrar sequências incrivelmente simples!

torcado
fonte
1

Haskell, 47 bytes ( A000010 e A010000 )

Ambas as sequências são relativamente simples.

p n=sum[1|x<-[1..n],gcd x n<2]--2+n*n=n p;1=0 p

Experimente online!

p n = a função totiente de Euler de n (A000010) (indexada 1)

Invertida:

p 0=1;p n=n*n+2--]2<n x dcg,]n..1[-<x|1[mus=n p

Experimente online!

p n = 1 se n = 0, caso contrário n ^ 2 + 2

Seria interessante ver uma resposta que não usa comentários ...

Leo Tenenbaum
fonte
1

Python 2 , 59 bytes (A030000 e A000030)

f=lambda n,k=0:k if`n`in`2**k`else f(n,k+1)#]0[`n`:n adbmal

Experimente online!

fk2kn

lambda n:`n`[0]#)1+k,n(f esle`k**2`ni`n`fi k:0=k,n adbmal=f

Experimente online!

n


Versão mais curta, que aceita as seqüências de caracteres (para as duas seqüências) e as duas ainda são indexadas em 0:

Python 2 , 56 bytes

f=lambda n,k=0:`k`*(n in`2**k`)or f(n,k+1)#]0[n:n adbmal

Experimente online!

lambda n:n[0]#)1+k,n(f ro)`k**2`ni n(*`k`:0=k,n adbmal=f

Experimente online!

TFeld
fonte