Inversez votre code, inversez l'OEIS

12

La tâche ici est d'écrire un programme qui prend un nombre naturel, n , et produit le n ème terme d'une séquence OEIS. Cette séquence doit avoir un identifiant sous la forme de Asuivi de 6 chiffres. Maintenant, lorsque vous prenez votre code source et inversez l'ordre de ses octets pour produire un nouveau programme, ce programme doit également implémenter une séquence OEIS. La nouvelle séquence doit être identifiée par un Asuivi des 6 mêmes chiffres que la dernière fois mais dans l'ordre inverse (y compris les zéros de tête).

Maintenant, pour éviter que les choses ne soient triviales, ni le numéro d'identification OEIS ni votre programme ne peuvent être des palindromes. Autrement dit, les séquences et les programmes devraient être différents. Vous ne pouvez pas choisir une séquence pour laquelle son inverse n'existe pas ou est vide.

Pour chacune de vos séquences, vous pouvez choisir d'utiliser l'indexation 0 ou 1. Ils n'ont pas à utiliser la même indexation. Étant donné que certaines séquences OEIS ont un domaine limité, vous devez uniquement afficher les numéros corrects pour le domaine de la séquence. Votre comportement requis n'est pas défini en dehors du domaine (vous pouvez sortir 0, planter, commander une pizza, etc.).

Il s'agit de donc les réponses seront notées en octets avec moins d'octets mieux.

Ad Hoc Garf Hunter
la source
Les zéros non significatifs sont-ils inclus dans l'inversion du numéro de séquence?
pppery
1
@pppery Ils doivent l'être, car les numéros OEIS ont exactement 6 chiffres. (il le dit aussi explicitement dans la question)
Jo King
Pouvons-nous prendre l'entrée (index) comme une chaîne?
TFeld

Réponses:

4

Perl 6 , 55 octets (A055642 et A246550)

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

Essayez-le en ligne!

n

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

Essayez-le en ligne!

XeXe4

La plupart de ce défi consistait simplement à trouver une bonne séquence avec un revers pas trop compliqué.

Mise à jour: en utilisant la réponse de torcado , cela peut être de 19 octets (A010851 et A158010)

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

Essayez-le en ligne!

Jo King
la source
2

\ / \ /> , 15 14 octets ( A010851 et A158010 )

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

efficacement cn, sortie 12

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

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

merci à un ami d'avoir trouvé des séquences incroyablement simples!

torcado
la source
1

Haskell, 47 octets ( A000010 et A010000 )

Les deux séquences sont relativement simples.

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

Essayez-le en ligne!

p n = la fonction de totient d'Euler de n (A000010) (1 indexée)

Renversé:

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

Essayez-le en ligne!

p n = 1 si n = 0, sinon n ^ 2 + 2

Il serait intéressant de voir une réponse qui n'utilise pas de commentaires ...

Leo Tenenbaum
la source
1

Python 2 , 59 octets (A030000 et A000030)

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

Essayez-le en ligne!

fk2kn

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

Essayez-le en ligne!

n


Version plus courte, qui prend les chaînes en entrée (pour les deux séquences), et toutes deux toujours indexées 0:

Python 2 , 56 octets

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

Essayez-le en ligne!

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

Essayez-le en ligne!

TFeld
la source