OEIS-Sequenzen anzeigen


29

Die Online -Enzyklopädie ganzzahliger Sequenzen (OEIS) ist eine Online-Datenbank ganzzahliger Sequenzen. Es enthält fast 280000 Sequenzen von mathematischem Interesse.

Beispiele für Sequenzen:

Ihre Aufgabe ist es, ein Programm oder eine Funktion zu schreiben, die so viele OEIS-Sequenzen wie möglich mit einem Quellcode von maximal 100 Byte anzeigt . Ihr Programm sollte die Sequenz-ID (ohne die vorangestellten Aund die Nullen) als Eingabe akzeptieren und die 20 ersten Zahlen in dieser Sequenz ausgeben.

Sie dürfen die Daten nicht direkt von der OEIS-Website abrufen. Alle Sequenzen müssen von Ihrem Code berechnet werden.

Wertung

Score ist die Anzahl der OEIS-Sequenzen, die das Programm anzeigen kann. Answers muss die IDs der Sequenzen auflisten, die von ihrem Programm erkannt wurden.

Beispiel

Hier ist eine gültige Antwort in Java 8:

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

Dieses Programm kann die positiven ganzen Zahlen (A000027 - Eingabe 27) und die Quadrate (A000290 - Eingabe 290) anzeigen, daher ist seine Punktzahl 2.

Hinweis

Bitte vermeiden Sie es, die gesamte OEIS-Website zu durchsuchen :-) Sie können die Sequenznamen (ca. 3 MB) oder Sequenzwerte (ca. 9 MB) herunterladen. Beachten Sie, dass dieser Download durch den OEIS-Endbenutzer-Lizenzvertrag abgedeckt ist .


Können wir es so schreiben, dass es die führenden Nullen nimmt?
TrojanByAccident

2
WHOO! Eine Herausforderung für OEIS!
JungHwan Min 18.01.17

1
@TrojanByAccident Wenn Sie eine Verbindung zu OEIS herstellen möchten, ist dies bei PPCG nicht zulässig
Nathan Merrill

@ NathanMerrill Ich war mir nicht sicher, ob das in diesem Fall zählte
TrojanByAccident

Sind Funktionen erlaubt?
xnor

Antworten:


25

CJam ( 2182 2780 3034 Sequenzen)

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

Dies gibt korrekte Antworten für die Inklusivbereiche

  • [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,A108322A111855A111859[A111898, A111899]A112802A122180A129947A137579 , 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

Die A040???Sequenzen entsprechen den fortgesetzten Brüchen von nicht-rationalen Quadratwurzeln von sqrt(2)bis sqrt(1000)(wobei die Lücken denen entsprechen, die früher in OEIS erscheinen, aber zweckmäßigerweise mit zufälligen Sequenzen gefüllt sind). Die A041???Sequenzen entsprechen die Zähler und Nenner des Kettenbruch convergents für nicht-rationale Quadratwurzeln von sqrt(6)bis sqrt(1000)(mit dem Spalte entspricht sqrt(10), an A005667 and A005668). Die anderen sortierten Sequenzen haben für ihre ersten zwanzig Werte Nullen.

Die Antwort enthält Elemente aus zwei meiner früheren Antworten in GolfScript:

Vielen Dank an xnor für die kurzen, geschlossenen x -> x + round(sqrt(x))Zuordnungssequenzen, die den Wert von sqrt kompensieren . Die Einsparungen gegenüber meiner vorherigen Berechnung (Generieren der Liste der Nichtquadrate und Auswählen nach Index) ergaben für die meisten Indizes außerhalb des Bereichs einen Fallback von Null.


Könnte es nützlich sein, dass das n-te Nichtquadrat durch gegeben ist n + round(sqrt(n))?
21.

@ Xnor, schön. Ich habe versucht, eine schöne Formel mit zu finden, sqrt(n)aber es ist mir nicht eingefallen, eher auf den nächsten als auf den nächsten zu runden. Das ergibt eine sofortige Einsparung von drei Bytes, die nicht ausreicht, um einen Fallback hinzuzufügen, aber die Hoffnung am Leben erhält.
Peter Taylor

35

Python 2, 875 Sequenzen

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

Funktioniert für 875 der Sequenzen 21016 (Dezimalstellen von 1/12) bis 21999 (Dezimalstellen von 1/995).

Ich habe diesen Block mit dem ausgeklügelten Suchalgorithmus gefunden, bei dem ich die Sequenz-IDs willkürlich von Hand eingetippt habe. Einige der Sequenzen im Bereich haben nicht dieses Format und erscheinen an anderer Stelle (danke an Mitchell Spector, der darauf hingewiesen hat). Zum Beispiel ist 21021 nicht die Erweiterung von 1/17.

Auch bei Unterbrechungen werden die Sequenzen für 1 / n als id angezeigt n+21004. Der Rest wird nicht verschoben, aber die fehlenden Sequenzen erscheinen an anderer Stelle. Beispielsweise wird 1/17 als 7450 angezeigt .

Ich habe diejenigen, die übereinstimmen, anhand einer heruntergeladenen Kopie der Sequenznamen gezählt.

Ein anderer Block gibt 848 Sequenzen von 16742 bis 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)

Diese haben alle Form n -> (a*n+b)^c, wo 2≤a≤12, 0≤b<a, 1≤c≤12. Der Code extrahiert die Koeffizienten durch Invertieren von Dreieckszahlen und Modulen. Nach wie vor stimmen nicht alle Sequenzen im Bereich überein. Wenn diese beiden Ausdrücke in 100 Bytes passen könnten, gäbe es 1723 Sequenzen.

Vielversprechende Stücke:

  • 1929 Übereinstimmungssequenzen: 41006 bis 42397 , Zähler und Nenner fortgesetzter Fraktionskonvergenten.
  • ~ 3300 übereinstimmende Sequenzen: 147999 bis 151254 : Anzahl der Wanderungen auf Z ^ 3, wenn Sie die Reihenfolge der Vektorlisten ermitteln können.

Hier finden Sie Kategorien für andere potenzielle Chunks, indem Sie die OEIS-Sequenznamen gruppieren, indem Sie alle Zahlen (Ziffern, Minuszeichen, Dezimalpunkt) entfernen. Sie sind nach Anzahl der Auftritte sortiert.

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 Sequenzen:

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

Arbeiten von 8585 (Vielfache von 3) bis 8607 (Vielfache von 25) und 1018 (Potenzen von 8) bis 1029 (Potenzen von 19). Praktischerweise sind diese alle in einem Block nach ID sortiert.

Dies verwendet nur 65 der 100 erlaubten Bytes und ist noch nicht voll besetzt, also suche ich nach einem anderen netten Teil.


haha schön!
Maltysen

auch kürzer:lambda n:range(0,(n-8582)*20,n-8582)
Maltysen

@Maltysen Spec sagte Programm, also ging ich damit. Ich werde fragen.
xnor

2
Gute Idee, aber ich glaube nicht, dass der Bereich 21016-21999 nur aus Reziprozitäten besteht. Beispiel: A21021 ist 1, 33, 727, 13365, 221431, 3428733, ... und nicht die Dezimalstelle 1/17. Ich habe nicht überprüft, welche Sequenzen Reziprozitäten sind und welche nicht.
Mitchell Spector

1
@xnor Wie viele Übereinstimmungen Sie auch bekommen, Sie können sie mit meiner Antwort kombinieren, um weitere 252 zur Zählung hinzuzufügen: Wenn die Eingabe nicht im Bereich 21016-21999 liegt, geben Sie 20 0 aus. (Keine meiner 252 Sequenzen liegt in diesem Bereich.)
Mitchell Spector

29

Bash + Coreutils, 252 Sequenzen

yes 0|head -20

Probieren Sie es online!

Funktioniert mit 252 OEIS-Sequenzen: A000004, A006983, A011734, A011735, A011736, A011737, A011738, A011739, A011740, A011741, A011742, A011743, A011744, A011745, A011775, A011776, A025425438 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, A034511A034518, 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, A0855111792, A094382, A10551118, 93392A111899, A112802, A122180, A129947, A137579, A159708, A161277, A161278, A161279, A161280, A165766, A167263, A178780, A178798, A180472, A180601, A181340, A18174618518, 518 A185255, A185264, A185284, A191928, A192541, A197629, A198255, A200214, A206499, A210632, A212619, A217148, A217149, A217151, A218953, A2217155, A217156 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, A23538363 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, A23538363 A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492, A280815


4
He, süße Idee!
Jonathan Allan

12

Python (mit Sympyie), 144 146 Sequenzen

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:]

Die Funktion ffunktioniert für die 146 Sequenzen A016578 bis einschließlich A016723 .

Alle diese werden vom Testkabelbaum bei repl.it ausgegeben .

Die 49 Sequenzen A016578 bis A016626 einschließlich sind die Dezimalerweiterungen von log (3/2), log (5/2), log (7/2), ..., log (99/2).

Die 97 Sequenzen A016627 bis A016723 einschließlich sind die Dezimalerweiterungen von log (4), log (5), log (6), ..., log (100).

Die ersten beiden der 49 beginnen mit der ersten Dezimalstelle, da die Protokollwerte für sie kleiner als 1 sind , sodass [-20:]die nachfolgenden 20 Dezimalstellen des Ergebnisses des Aufrufs verwendet werden, zu ...n(20)dem 20 signifikante Ziffern gelangen. Das if'.'<cfiltert das Dezimalstellenzeichen heraus und int(c)wandelt jedes verbleibende Ziffernzeichen in eine Ganzzahl um (obwohl dies möglicherweise nicht erforderlich ist).


10

Jelly, 1127 1975 Sequenzen

- Hier werden derzeit die Ergebnisse von xnor und Mitchell Spector zusammengefasst , es besteht jedoch noch ein gewisser Spielraum für ein Wachstum von 78 Byte. Geh und gib ihnen etwas Ehre!

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

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

TryItOnline!

Die 1975 Sequenzen sind:

  • die 252, die mit zwanzig Nullen beginnen (das Verhalten für Eingaben außerhalb von [16000,21999] );
  • die 848 Sequenzen im Bereich von 16742 bis 17664 , die der (a*n+b)**cFormel entsprechen (das Verhalten für die Eingabe in[16000,17999] ); und
  • die 875 Sequenzen im Bereich von 21016 bis 21999 , die mit der Dezimalerweiterung von 1/n(dem Verhalten für die Eingabe in [18000,21999]) übereinstimmen .

Wie?

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 Sequenzen

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]]&

Inspiriert von Jonathan Allans Antwort .

Funktioniert für:

  • 1477 , 2837 , 4830 und 8554 (die ersten 20 davon sind {0, 1, 2, ... , 19})
  • 16578 bis 16626 (Dezimalerweiterung von log (3/2), Dezimalerweiterung von log (5/2), ... Dezimalerweiterung von log (99/2))
  • 16627 bis 16723 (Dezimalerweiterung von log (4), Dezimalerweiterung von log (5), ... Dezimalerweiterung von log (100))
  • 22958 bis 22996 (2-n, 3-n, ... 40-n)

6

CJam, 1831 Sequenzen

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

Dies gibt die korrekte Ausgabe für 199 beginnende Sequenzen 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0und alle Sequenzen in den Inklusivbereichen [A168680, A169579]und aus[A170000, A170731] . Der Großteil davon befasst sich mit diesen beiden Bereichen, mit einem Fallback für alle Nullen vor dem Start des ersten Bereichs.

Die beiden fraglichen Bereiche haben die Form

nPSich mit Beziehungen (Sich)2=(SichSj)Q.=ich

für Werte von P von 3 zu 50 und Werte von Q. von 17 zu 50. Ihre Erzeugungsfunktionen sind in einer durch und durch ineffizienten Weise gegeben: Ich fand es nützlich, Zähler und Nenner mit zu multiplizieren(t-1) geben gf

tQ.+1+tQ.-t-112(P-2)(P-1)tQ.+1-12(P-2)(P+1)tQ.+(P-1)t-1
obwohl ich eigentlich zum Golfen arbeite R=P+3.

1

Batch, 62 Sequenzen

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

Nur ein Block von Sequenzen zu implementieren war schwierig, aber ich schaffte zwei in 89 Bytes! Erläuterung: Für einen Parameter %1von 8585-8607 wird 22956-%1>>16null zurückgegeben, wodurch der (22956-%1)Ausdruck ignoriert wird. Am Ende multiplizieren wir die Schleifenvariable mit 3-25, während für einen Parameter von 22958-22996 minus eins zurückgegeben wird, wodurch der Ausdruck erzeugt wird negiert, während der n|Multiplikationsfaktor durch minus eins ersetzt wird , wodurch die Schleifenvariable effektiv subtrahiert wird.


1
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.