Afficher les séquences OEIS


29

L' Encyclopédie en ligne des séquences entières (OEIS) est une base de données en ligne de séquences entières. Il contient près de 280000 séquences d'intérêt mathématique.

Exemples de séquences:

Votre tâche consiste à écrire un programme ou une fonction qui affiche autant de séquences OEIS que possible, avec un code source de 100 octets maximum. Votre programme devrait accepter comme entrée l'ID de séquence (sans le préfixe Aet les zéros) et sortir les 20 premiers nombres de cette séquence.

Vous n'êtes pas autorisé à récupérer les données directement à partir du site Web d'OEIS; toutes les séquences doivent être calculées par votre code.

Notation

Le score est le nombre de séquences OEIS que le programme peut afficher. Les réponses devront lister les identifiants des séquences reconnues par leur programme.

Exemple

Voici une réponse valide en Java 8:

(int a) -> {
    for (int i = 0; i < 20; i++) {
        System.out.println(a==27?i+1:i*i); 
    }
};

Ce programme peut afficher les entiers positifs (A000027 - entrée 27) et les carrés (A000290 - entrée 290), donc son score est de 2.

Remarque

Veuillez éviter de gratter tout le site Web d'OEIS :-) vous pouvez télécharger les noms de séquence (environ 3 Mo) ou les valeurs de séquence (environ 9 Mo). Notez que ce téléchargement est couvert par le contrat de licence d'utilisateur final OEIS .


Pouvons-nous l'écrire pour qu'il prenne les 0 de tête?
TrojanByAccident

2
WHOO! Un défi sur OEIS!
JungHwan Min

1
@TrojanByAccident si votre idée est de vous connecter à OEIS, ce n'est pas autorisé sur PPCG
Nathan Merrill

@NathanMerrill Je ne savais pas si cela comptait dans ce cas
TrojanByAccident

Les fonctions sont-elles autorisées?
xnor

Réponses:


25

CJam ( 2182 2780 3034 séquences)

{:ZA3#:Cb(40-z_!!:B-\+CbB)/)_mqmo:M+:NK{)[N0{N1$_*-@/M@+1$md@M@-}K*]<W%B{X0@{2$*+\}%}*ZB&=}%\C)<f*}

Cela donne des réponses correctes pour les plages inclusives

  • [A040000, A040003], [A040005, A040008], [A040011, A040013], A040015, [A040019, A040022], A040024, [A040029, A040033], A040035, A040037, [A040041, A040043], A040048, A040052, [A040055, A040057], A040059, A040063, [A040071, A040074], A040077, A040080, [A040090, A040091], [A040093, A040094], A040097, A040099, [A040109, A040111], A040118, A040120, [A040131, A040135], A040137, A040139, [A040142, A040143], A040151, [A040155, A040157], A040166, A040168, [A040181, A040183],[A040185, A040968]
  • [A041006, A041011], [A041014, A042937]
  • A006983, [A011734, A011745], [A023975, A023976], [A025438, A025439], [A025443, A025444], A025466, A025469, [A034422, A034423], A034427, A034429, A034432, A034435, [A034437, A034439], A034441, A034443, A034445, A034447, [A034449, A034459], [A034461, A034462], [A034464, A034469], A034471, A034473, [A034475, A034477], [A034479, A034487], [A034489, A034490], [A034492, A034493], A034495, [A034497, A034512], [A034514, A034516], [A034518, A034523], [A034525, A034582], A036861, A047752, A052375, A055967, A061858, A065687, A066035, A067159, A067168, A070097, A070202, A070204, [A070205, A070206], A072325, A072769, A076142, A082998, A083344, A085974, A085982, A086007, A086015, A089458, A093392, A094382, A105517,A108322, A111855, A111859, [A111898, A111899], A112802, A122180, A129947, A137579, A159708, [A161277, A161280], A165766, A167263, A178780, A178798, A180472, A180601, A181340, A181735, A184946, A185037, A185203, [A185237, A185238], [A185245, A185246], A185255, A185264, A185284, A191928, A192541, A197629, A198255, A200214, A206499, A210632, A212619, [A217148, A217149], A217151, [A217155, A217156], A228953, A230533, A230686, A235044, A235358, A236265, A236417, A236460, A238403, [A243831, A243836], A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492,A280815

Les A040???séquences correspondent aux fractions continues de racines carrées non rationnelles de sqrt(2)à sqrt(1000)(avec les lacunes correspondant à celles qui apparaissent plus tôt dans OEIS, mais commodément remplies de séquences aléatoires). Les A041???séquences correspondent aux numérateurs et dénominateurs des convergents de fraction continue pour les racines carrées non rationnelles de sqrt(6)à sqrt(1000)(avec l'écart correspondant à sqrt(10), à A005667 and A005668). Les autres séquences assorties ont des zéros pour leurs vingt premières valeurs.

Les éléments de réponse de ports de deux réponses précédentes à moi dans GolfScript:

Un grand merci à xnor pour la courte x -> x + round(sqrt(x))séquence de mappage de formulaires fermés qui compense la valeur de sqrt. Les économies par rapport à mon calcul précédent (génération de la liste des non-carrés et sélection par indice) ont fourni suffisamment pour avoir un repli entièrement nul pour la plupart des indices hors plage.


Serait-il utile que le nième non-carré soit donné par n + round(sqrt(n))?
2017

@xnor, chouette. J'ai essayé de trouver une bonne formule avec, sqrt(n)mais je n'ai pas pensé à arrondir au plus proche plutôt qu'au bas. Cela donne une économie immédiate de trois octets, ce qui n'est pas tout à fait suffisant pour ajouter un repli mais maintient l'espoir en vie.
Peter Taylor

35

Python 2, 875 séquences

print', '.join('%020d'%(10**20/(input()-21004)))

Fonctionne pour 875 des séquences 21016 (chiffres décimaux de 1/12) à 21999 (chiffres décimaux de 1/995).

J'ai trouvé ce morceau avec l'algorithme de recherche sophistiqué de la saisie au hasard des identifiants de séquence à la main. Certaines séquences de la gamme ne sont pas de ce format et apparaissent ailleurs (merci à Mitchell Spector de l'avoir signalé). Par exemple, 21021 n'est pas l'expansion de 1/17.

Même avec les interruptions, les séquences pour 1 / n apparaissent comme id n+21004. Le reste n'est pas décalé, mais les séquences manquantes apparaissent ailleurs. Par exemple, 1/17 apparaît comme 7450 .

J'ai compté ceux qui correspondent en utilisant une copie téléchargée des noms de séquence.

Un bloc différent donne 848 séquences de 16742 à 17664 .

n=input()-16729
for i in range(20):k=n/12;a=int((8*k+1)**.5/2+.5);print(a*i+k-a*(a-1)/2)**(n%12+1)

Tout cela a une forme n -> (a*n+b)^c, où 2≤a≤12, 0≤b<a, 1≤c≤12. Le code extrait les coefficients via des nombres triangulaires inverses et des modules. Comme précédemment, toutes les séquences de la plage ne correspondent pas. Si ces deux expressions pouvaient tenir dans 100 octets, cela donnerait 1723 séquences.

Morceaux prometteurs:

  • Séquences d'appariement de 1929: 41006 à 42397 , numérateurs et dénominateurs des convergents de fraction continue.
  • ~ 3300 séquences correspondantes: 147999 à 151254 : nombre de promenades sur Z ^ 3, si vous pouvez trouver comment les listes de vecteurs sont ordonnées.

Voici des catégories pour d'autres morceaux potentiels, en regroupant les noms de séquence OEIS en supprimant tous les nombres (chiffres, signe moins, point décimal). Ils sont triés par nombre d'apparitions.

3010    Number of walks within N^ (the first octant of Z^) starting at (,,) and consisting of n steps taken from {(, , ), (, , ), (, , ), (, , ), (, , )}
2302    Number of reduced words of length n in Coxeter group on  generators S_i with relations (S_i)^ = (S_i S_j)^ = I
979     Primes congruent to  mod 
969     Numerators of continued fraction convergents to sqrt()
967     Denominators of continued fraction convergents to sqrt()
966     Continued fraction for sqrt()
932     Decimal expansion of /
894     Duplicate of A
659     Partial sums of A
577     Divisors of 
517     Inverse of th cyclotomic polynomial
488     Expansion of /((x)(x)(x)(x))
480     Decimal expansion of th root of 
471     Number of nX  arrays with each element x equal to the number its horizontal and vertical neighbors equal to ,,,, for x=,,,,
455     First differences of A
448     Decimal expansion of log_ ()
380     Numbers n such that string , occurs in the base  representation of n but not of n+
378     Erroneous version of A
375     Numbers n such that string , occurs in the base  representation of n but not of n
340     Numbers n with property that in base  representation the numbers of 's and 's are  and , respectively

35 séquences:

c=input()
for n in range(20):print[(c-1010)**n,(c-8582)*n][c>2e3]

Fonctionne de 8585 (multiples de 3) à 8607 (multiples de 25) et 1018 (puissances de 8) à 1029 (puissances de 19). Idéalement, ces éléments sont tous regroupés en un seul morceau, classés par id.

Cela n'utilise que 65 des 100 octets autorisés et n'est pas encore entièrement joué, donc je vais chercher un autre morceau sympa.


haha, chouette!
Maltysen

aussi, plus court:lambda n:range(0,(n-8582)*20,n-8582)
Maltysen

@Maltysen Spec a dit le programme, donc je suis allé avec ça. Je demanderai.
xnor

2
Bonne idée, mais je ne pense pas que la gamme 21016-21999 se compose entièrement de réciproques. Par exemple, A21021 est 1, 33, 727, 13365, 221431, 3428733, ..., pas les chiffres décimaux de 1/17. Je n'ai pas vérifié pour voir quelles séquences sont inverses et lesquelles ne le sont pas.
Mitchell Spector

1
@xnor Quel que soit le nombre de correspondances que vous obtenez, vous pouvez le combiner avec ma réponse pour ajouter 252 autres au nombre: si l'entrée n'est pas dans la plage 21016-21999, sortez 20 0. (Aucune de mes 252 séquences ne se situe dans cette plage.)
Mitchell Spector

29

Bash + coreutils, 252 séquences

yes 0|head -20

Essayez-le en ligne!

Fonctionne sur 252 séquences OEIS: A000004, A006983, A011734, A011735, A011736, A011737, A011738, A011739, A011740, A011741, A011742, A011743, A011744, A011745, A023975, A02, A04, A0 A034422, A034423, A034427, A034429, A034432, A034435, A034437, A034438, A034439, A034441, A034443, A034445, A034447, A034449, A034450, A034451, A034452, A034453, A034454, A034455, A034456, A034457, A034458, A034459, A034461, A034462, A034464, A034465, A034466, A034467, A034468, A034469, A034471, A034473, A034475, A034476, A034477, A034479, A034480, A034481, A034482, A034483, A034484, A034485, A034486, A034487, A034489, A034490, A034492, A034493, A034495, A034497, A034498, A034499, A034500, A034501, A034502, A034503, A034504, A034505, A034506, A034507, A034508, A034509, A034510, A034511, A03453A034518, A034519, A034520, A034521, A034522, A034523, A034525, A034526, A034527, A034528, A034529, A034530, A034531, A034532, A034533, A034534, A034535, A034536, A034537, A034538, A034539, A034540, A034541, A034542, A034543, A034544, A034545, A034546, A034547, A034548, A034549, A034550, A034551, A034552, A034553, A034554, A034555, A034556, A034557, A034558, A034559, A034560, A034561, A034562, A034563, A034564, A034565, A034566, A034567, A034568, A034569, A034570, A034571, A034572, A034573, A034574, A034575, A034576, A034577, A034578, A034579, A034580, A034581, A034582, A036861, A047752, A052375, A055967, A061858, A065687, A066035, A067159, A067168, A070097, A070202, A070204, A070205, A070206, A072325, A072769, A076142, A082998, A083344, A085974, A085982, A086007, A086015, A089458, A093392, A094382, A105517, A188A111899, A112802, A122180, A129947, A137579, A159708, A161277, A161278, A161279, A161280, A165766, A167263, A178780, A178798, A180472, A180601, A181340, A181735, A184924 A185255, A185264, A185284, A191928, A192541, A197629, A198255, A200214, A206499, A210632, A212619, A217148, A217149, A217151, A217155, A217156, A228953, A2302362 A2402 A243831, A243832, A243833, A243834, A243835, A243836, A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492, A280815A198255, A200214, A206499, A210632, A212619, A217148, A217149, A217151, A217155, A217156, A228953, A230533, A230686, A235044, A235358, A236265, A236417, A236460, A2384024 A24 A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492, A280815A198255, A200214, A206499, A210632, A212619, A217148, A217149, A217151, A217155, A217156, A228953, A230533, A230686, A235044, A235358, A236265, A236417, A236460, A2384024 A24 A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492, A280815


4
Hé, jolie idée!
Jonathan Allan

12

Python (avec sympy), 144 146 séquences

import sympy
f=lambda a,M=16627:[int(c)for c in str(sympy.log((a<M)*46.5+4+a-M).n(20))if'.'<c][-20:]

La fonction ffonctionne pour les 146 séquences A016578 à A016723 inclus.

Tous ces éléments sont émis par le faisceau de test à repl.it .

Les 49 séquences A016578 à A016626 inclus sont les extensions décimales de log (3/2), log (5/2), log (7/2), ..., log (99/2).

Les 97 séquences A016627 à A016723 inclus sont les extensions décimales de log (4), log (5), log (6), ..., log (100).

Les deux premiers des 49 commencent à la première décimale car leurs valeurs logarithmiques sont inférieures à 1 , de sorte que le [-20:]prend les 20 décimales de fin du résultat de l'appel à ...n(20)laquelle obtient 20 chiffres significatifs. Le if'.'<cfiltre le caractère décimal et int(c)convertit chaque caractère numérique restant en un entier (bien que cela ne soit peut-être pas nécessaire).


10

Jelly, 1127 1975 séquences

- ceci combine actuellement les résultats de xnor et Mitchell Spector , mais a encore une certaine marge de croissance à 78 octets. Allez leur donner du crédit!

0x20
_21004µȷ20:DU¢oU
20Ḷ×⁸+µ*þ12
11R‘µẋ`€F$ç"Ḷ€F$;/
_108ị¢

“æÑØ‘×ȷ3¤>J×$S‘µĿ

TryItOnline!

Les séquences de 1975 sont:

  • les 252 qui commencent par vingt zéros (le comportement pour l'entrée en dehors de [16000,21999]);
  • les 848 séquences comprises entre 16742 et 17664 qui correspondent à la (a*n+b)**cformule (le comportement pour l'entrée dans [16000,17999]); et
  • les 875 séquences comprises entre 21016 et 21999 qui correspondent à l'expansion décimale de 1/n(le comportement pour l'entrée dans [18000,21999]).

Comment?

0x20 - Link 1, TwentyZeros: no arguments
0    - zero
  20 - twenty
 x   - repeat

_21004µȷ20:DU¢oU - Link 2, DecimalExpansionOfReciprocal: oeisIndexNumber
      µ          - monadic chain separation
       ȷ20       - 1e20
_21004           - subtract 21004 from oeisNumber to get the n value
          :      - integer division, i.e. 1e20 // n
           D     - decimal list
            U    - reverse
             ¢   - call last link (1) as a nilad, i.e. get twenty zeros
              o  - logical or, i.e. pad the right of the reversed list to twenty with zeros
               U - reverse again

20Ḷ×⁸+µ*þ12 - Link 3, BlockOf12abcFormulaResults: a, b
20Ḷ         - lowered range of 20 [0,1,...,19] i.e. the values of n in (a*n+b)**c
    ⁸       - left argument, a
   ×        - multiply
     +      - add b
      µ     - monadic chain separation
        þ12 - outer product with [1,2,...,12] of... i.e. the values of c in (a*n+b)**c
       *    -     exponentiation

11R‘µẋ`€F$ç"Ḷ€F$;/ - link 4, AllabcFormulaResults: no aguments
11R                - range of 11 [1,2,...,11]
   ‘               - increment   [2,3,...12] i.e. the values of a in (a*n+b)**c
    µ              - monadic chain separation
         $         - last two links as a monad
     ẋ`€           - repeat list with repeated arguments for €ach [[2,2],[3,3,3],...,[12,12,12,12,12,12,12,12,12,12,12,12]]
        F          - flatten into one list
               $   - last two links as a monad
            Ḷ€     - lowered range of €ach [[0,1],[0,1,2],...,[0,1,2,3,4,5,6,7,8,9,10,11]]
              F    - flatten into one list
          ç"       - zip with (") last link (3) as a dydad (ç) i.e. get all the results
                 / - reduce with
                ;  - concatenation i.e. make the list of lists of lists one list of lists.

_108ị¢ - Link 5, abcFormulaResult: oeisIndexNumber
_108   - subtract 108 from the oeisNumber (indexes in Jelly are modular and there are 924 entries, this is shorter than _16740)
     ¢ - call last link (4) as a nilad
    ị  - index into i.e. get the one relevant result of 20 terms

 - Link 6, an empty link (cheaper in bytes than the %6 alternative in the main link)

“æÑØ‘×ȷ3¤>J×$S‘µĿ - Main link: oeisIndexNumber           e.g. 1-15999; 16000-17999; 18000-21999; 22000+
        ¤         - nilad followed by link(s) as a nilad
“æÑØ‘             - codePage indexes [22,16,18]
      ȷ3          - 1e3
     ×            - multiply [22000,16000,18000]
         >        - greater than (vectorises)            e.g. [1,1,1]; [1,0,1];     [1,0,0];     [0,0,0]
            $     - last two links as a monad
          J       - range(length) [1,2,3]
           ×      - multiply                             e.g. [1,2,3]; [1,0,3];     [1,0,0];     [0,0,0]
             S    - sum                                  e.g. 6;       4;           1;           0
              ‘   - increment                            e.g. 7;       5;           2;           1
               µ  - monadic chain separation
                Ŀ - call link(index) as a monad with the oeisIndexNumber
                        link indexing is 1-based and modular so 7 calls link 1
              ><        hence the empty link 6 replacing a %6 here

8

Mathematica, 39 173 189 séquences

If[l=0~Range~19;#<4^7,l,If[#<3^9,#&@@RealDigits[Log[j=16627;#-j+If[#<j,49.5,4]],10,20],#-22956-l]]&

Inspiré par la réponse de Jonathan Allan .

Fonctionne pour:

  • 1477 , 2837 , 4830 et 8554 (les 20 premiers termes de ceux-ci sont {0, 1, 2, ... , 19})
  • 16578 à 16626 (expansion décimale de log (3/2), expansion décimale de log (5/2), ... expansion décimale de log (99/2))
  • 16627 à 16723 (expansion décimale de log (4), expansion décimale de log (5), ... expansion décimale de log (100))
  • 22958 à 22996 (2-n, 3-n, ... 40-n)

6

CJam, 1831 séquences

{168680-:Zz1320b900b48md:R;H+:QB+2*,:!1_tQWtQ)WtK{[WQW*_(]+1$f=[1R2+R~R4+*2/WR-X$-].*1b+}/J~>ZW>f*}

Cela donne une sortie correcte pour 199 séquences commençant 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0et toutes les séquences dans les plages inclusives [A168680, A169579]et [A170000, A170731]. Le gros de celui-ci concerne ces deux plages, avec un repli pour les zéros avant le début de la première plage.

Les deux gammes en question ont la forme

nPSi(Si)2=(SiSj)Q=I

P350Q1750(t1)

tQ+1+tQt112(P2)(P1)tQ+112(P2)(P+1)tQ+(P1)t1
R=P+3

1

Lot, 62 séquences

@for /l %%i in (1,1,20)do @set/a"n=(n=22956-%1)*(n>>=16)+%%i*(n|%1-8582)"&call echo %%n%%

L'implémentation d'un seul bloc de séquences a été difficile, mais j'en ai réussi deux en 89 octets! Explication: Pour un paramètre %1de 8585-8607, 22956-%1>>16renvoie zéro, ce qui entraîne l' ignorance de l' (22956-%1)expression et nous finissons par multiplier la variable de boucle par 3-25 respectivement, tandis que pour un paramètre de 22958-22996, il renvoie moins un entraînant l'expression. nié, tandis que le n|fait que le facteur de multiplication soit remplacé par moins un en soustrayant effectivement la variable de boucle.


1
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.