Wyświetl sekwencje OEIS

29

On-Line Encyclopedia of Integer Sequences (OEIS) to elektroniczna baza danych sekwencji całkowitych. Zawiera prawie 280000 sekwencji matematycznych.

Przykłady sekwencji:

Twoim zadaniem jest napisanie programu lub funkcji, która wyświetli tyle sekwencji OEIS, ile możesz, z kodem źródłowym maksymalnie 100 bajtów . Twój program powinien zaakceptować jako dane wejściowe identyfikator sekwencji (bez poprzedzającego Ai zer) i wypisać 20 pierwszych liczb w tej sekwencji.

Nie wolno pobierać danych bezpośrednio ze strony internetowej OEIS; wszystkie sekwencje muszą być obliczone przez twój kod.

Punktacja

Wynik to liczba sekwencji OEIS, które program może wyświetlić. Odpowiedzi będą musiały zawierać identyfikatory sekwencji rozpoznawanych przez ich program.

Przykład

Oto poprawna odpowiedź w Javie 8:

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

Ten program może wyświetlać dodatnie liczby całkowite (A000027 - wejście 27) i kwadraty (A000290 - wejście 290), więc jego wynik to 2.

Uwaga

Unikaj skrobania całej witryny OEIS :-) możesz pobrać nazwy sekwencji (około 3 megapikseli) lub wartości sekwencji (około 9 megapikseli). Pamiętaj, że to pobieranie jest objęte umową licencyjną użytkownika końcowego OEIS .

Arnaud
źródło
Czy możemy to napisać, aby zajmowało pierwsze zero?
TrojanByAccident
2
WHOO! Wyzwanie dla OEIS!
JungHwan Min.
1
@TrojanByAccident, jeśli Twoim pomysłem jest połączenie się z OEIS, nie jest to dozwolone w PPCG
Nathan Merrill
@NathanMerrill Nie byłem pewien, czy to się liczy w tym przypadku
TrojanByAccident
Czy funkcje są dozwolone?
xnor

Odpowiedzi:

25

CJam ( 2182 2780 3034 sekwencji)

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

To daje poprawne odpowiedzi dla obejmujących zakresów

  • [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

Te A040???sekwencje odpowiadały ułamków nie-racjonalne kwadratowych z korzeni sqrt(2)do sqrt(1000)(ze szczelin odpowiadających te, które znajdują się wcześniej w OEIS, lecz korzystnie wypełnione losowych sekwencji). Te A041???sekwencje odpowiadały liczników i mianownik do ułamka convergents odmowy racjonalnych kwadratowych z korzeni sqrt(6)do sqrt(1000)(ze szczeliną odpowiadającą sqrt(10), na A005667 and A005668). Pozostałe wybrane sekwencje mają zera dla pierwszych dwudziestu wartości.

Odpowiedź zawiera elementy dwóch moich wcześniejszych odpowiedzi w GolfScript:

Ogromne podziękowania dla xnor za krótkie x -> x + round(sqrt(x))przesunięcia sekwencji mapowania zamkniętych formularzy do wartości sqrt. Oszczędności w porównaniu z moimi poprzednimi obliczeniami (generowanie listy nie kwadratów i wybieranie według indeksu) dostarczyły wystarczająco dużo, aby uzyskać zerowy rezerwowy wynik dla większości wskaźników spoza zakresu.

Peter Taylor
źródło
Czy użyteczne może być podanie n-tego nie-kwadratowego przez n + round(sqrt(n))?
xnor
@xnor, nice one. Próbowałem znaleźć fajną formułę, sqrt(n)ale nie przyszło mi do głowy, aby zaokrąglić do najbliższego, a nie w dół. Daje to natychmiastową oszczędność trzech bajtów, co nie wystarczy, aby dodać awarię, ale utrzymuje nadzieję przy życiu.
Peter Taylor
35

Python 2, 875 sekwencji

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

Działa dla 875 sekwencji 21016 (cyfry dziesiętne 1/12) do 21999 (cyfry dziesiętne 1/995).

Znalazłem ten fragment dzięki wyrafinowanemu algorytmowi wyszukiwania polegającemu na przypadkowym wpisywaniu identyfikatorów sekwencji ręcznie. Niektóre sekwencje z tego zakresu nie są w tym formacie i pojawiają się gdzie indziej (dzięki Mitchell Spector za zwrócenie na to uwagi). Na przykład 21021 nie jest rozszerzeniem 1/17.

Nawet przy przerwach sekwencje dla 1 / n pojawiają się jako id n+21004. Reszta nie jest przesunięta, ale brakujące sekwencje pojawiają się gdzie indziej. Na przykład 1/17 pojawia się jako 7450 .

Policzyłem te, które pasują, używając pobranej kopii nazw sekwencji.

Inny blok daje 848 sekwencji od 16742 do 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)

Wszystkie mają formę n -> (a*n+b)^c, gdzie 2≤a≤12, 0≤b<a, 1≤c≤12. Kod wyodrębnia współczynniki poprzez odwrócenie liczb i modułów trójkątnych. Jak poprzednio, nie wszystkie sekwencje w zakresie są zgodne. Jeśli te dwa wyrażenia mogłyby zmieścić się w 100 bajtach, dałoby to 1723 sekwencje.

Obiecujące fragmenty:

  • 1929 pasujących sekwencji: od 41006 do 42397 , liczniki i mianowniki konwergencji ciągłej frakcji.
  • ~ 3300 pasujących sekwencji: 147999 do 151254 : zlicza spacery na Z ^ 3, jeśli możesz znaleźć, w jaki sposób uporządkowane są listy wektorów.

Oto kategorie dla innych potencjalnych fragmentów, grupując nazwy sekwencji OEIS, usuwając wszystkie liczby (cyfry, znak minus, przecinek dziesiętny). Są one sortowane według liczby wystąpień.

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

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

Działa od 8585 (wielokrotności 3) do 8607 (wielokrotności 25) i od 1018 (potęgi 8) do 1029 (potęgi 19). Dogodnie są one wszystkie w jednym kawałku uporządkowanym według identyfikatora.

Używa tylko 65 ze 100 dozwolonych bajtów i nie jest jeszcze w pełni golfa, więc szukam innej fajnej porcji.

xnor
źródło
haha, miło!
Maltysen
także krótszy:lambda n:range(0,(n-8582)*20,n-8582)
Maltysen
@Maltysen Spec powiedział program, więc poszedłem z tym. Zapytam.
xnor
2
Dobry pomysł, ale nie sądzę, że zakres 21016-21999 składa się wyłącznie z wzajemności. Na przykład A21021 to 1, 33, 727, 13365, 221431, 3428733, ..., a nie cyfry dziesiętne 1/17. Nie sprawdziłem, które sekwencje są wzajemne, a które nie.
Mitchell Spector,
1
@ xnor Bez względu na to, ile otrzymujesz dopasowań, możesz połączyć je z moją odpowiedzią, aby dodać kolejne 252 do liczby: jeśli dane wejściowe nie mieszczą się w zakresie 21016-21999, wynik 20 0. (Żadna z moich 252 sekwencji nie mieści się w tym zakresie.)
Mitchell Spector,
29

Bash + coreutils, 252 sekwencje

yes 0|head -20

Wypróbuj online!

Działa na 252 sekwencjach OEIS: A000004, A006983, A011734, A011735, A011736, A011737, A011738, A011739, A011740, A011741, A011742, A011743, A011744, A011745, A03925, A0114, A 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, A03451145, A04512A034518, A034519, A034520, A034521, A034522, A034523, A034525, A034526, A034527, A034528, A034529, A034530, A034531, A034532, A034533, A034534, A034535, A034536, A03454537, A034545, A034534 A034544, A034545, A034546, A034547, A034548, A034549, A034550, A034551, A034552, A034553, A034554, A034555, A034556, A034557, A034558, A034559, A034560, A034561, A034553 A03 A034569, A034570, A034571, A034572, A034573, A034574, A034575, A034576, A034577, A034578, A034579, A034580, A034581, A034582, A036861, A047752, A052375, A055967, A0156, A066 A070204, A070205, A070206, A072325, A072769, A076142, A082998, A083344, A085974, A085982, A086007, A086015, A089458, A093392, A094382, A105517, A118855, A118855, A118855,A111899, A112802, A122180, A129947, A137579, A159708, A161277, A161278, A161279, A161280, A165766, A167263, A178780, A178798, A180472, A180601, A181340, A181785, A11885, A150 A185255, A185264, A185284, A191928, A192541, A197629, A198255, A200214, A206499, A210632, A212619, A217148, A217149, A217151, A217155, A217156, A228953, A230533, A230636, A230636, A2 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, A2383824, A3882424, A3838403 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, A2383824, A3882424, A3838403 A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492, A280815

Mitchell Spector
źródło
4
Hej, słodki pomysł!
Jonathan Allan
12

Python (z sympią), 144 146 sekwencji

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

Funkcja fdziała dla 146 sekwencji od A016578 do A016723 włącznie.

Wszystkie one są wyprowadzane przez uprzęży testu na repl.it .

Do 49 sekwencje A016578 przez A016626 włącznie są ekspansje dziesiętne log (3/2), log (5/2), log (7/2), ..., log (99/2).

W 97 sekwencja A016627 przez A016723 włącznie są ekspansja dziesiętne log (4), log (5), log (6), ..., log (100).

Pierwsze dwa z 49 rozpoczynają się od pierwszego miejsca po przecinku, ponieważ dla nich wartości dziennika są mniejsze niż 1 , więc [-20:]przyjmuje końcowe 20 miejsc po przecinku wyniku połączenia, do ...n(20)którego otrzymuje 20 cyfr znaczących. W if'.'<codfiltrowuje charakteru miejsca po przecinku i int(c)odlewy każdy pozostały cyfra znaków na liczbę całkowitą (choć być może nie jest to konieczne).

Jonathan Allan
źródło
10

Galaretka, 1127 sekwencji 1975

- obecnie łączy to wyniki Xnora i Mitchella Spectora , ale wciąż ma miejsce na wzrost przy 78 bajtach. Idź, daj im trochę uznania!

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

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

TryItOnline!

Sekwencje z 1975 r .:

  • 252, które zaczynają się od dwudziestu zer (zachowanie na wejściu poza [16000,21999]);
  • 848 sekwencji mieszczących się w zakresie od 16742 do 17664, które pasują do (a*n+b)**cformuły (zachowanie wejścia [16000,17999]); i
  • 875 sekwencji leżących w zakresie od 21016 do 21999, które pasują do rozwinięcia dziesiętnego 1/n(zachowanie wejścia [18000,21999]).

W jaki sposób?

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
Jonathan Allan
źródło
8

Mathematica, 39 173 189 sekwencji

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

Zainspirowany odpowiedzią Jonathana Allana .

Pracuje dla:

  • 1477 , 2837 , 4830 i 8554 (pierwsze 20 warunków to {0, 1, 2, ... , 19})
  • 16578 do 16626 (dziesiętne rozwinięcie log (3/2), dziesiętne rozwinięcie log (5/2), ... dziesiętne rozwinięcie log (99/2))
  • 16627 do 16723 (ekspansja log dziesiętny (4), rozszerzenie dziesiętny log (5), ... rozszerzenie log dziesiętny (100))
  • 22958 do 22996 (2-n, 3-n, ... 40-n)
JungHwan Min
źródło
6

CJam, 1831 sekwencji

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

Daje to prawidłową moc wyjściową dla 199 sekwencji rozpoczynających się 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0i wszystkich sekwencji w przedziałach włączających [A168680, A169579]i [A170000, A170731]. Większość z nich dotyczy tych dwóch zakresów, z rezerwą dla zer zerowych przed rozpoczęciem pierwszego zakresu.

Te dwa zakresy mają formę

Liczba zredukowanych słów długości n w grupie Coxeter na P. generatory S.ja z relacjami (S.ja)2)=(S.jaS.jot)Q=ja

dla wartości P. od 3) do 50 i wartości Q od 17 do 50. Ich funkcje generujące są podane w całkowicie nieefektywny sposób: uznałem za użyteczne pomnożyć liczniki i mianowniki przez(t-1) dać gf

tQ+1+tQ-t-112)(P.-2))(P.-1)tQ+1-12)(P.-2))(P.+1)tQ+(P.-1)t-1
chociaż do celów golfowych faktycznie pracuję R=P.+3).
Peter Taylor
źródło
1

Partia, 62 sekwencje

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

Samo wdrożenie jednego bloku sekwencji było trudne, ale udało mi się dwa na 89 bajtów! Objaśnienie: Dla parametru %18585-8607 22956-%1>>16zwraca zero, co powoduje (22956-%1)zignorowanie wyrażenia, a następnie mnożymy zmienną pętli odpowiednio przez 3-25, natomiast dla parametru 22958-22996 zwraca minus jeden, powodując, że wyrażenie jest negowane, podczas gdy n|powoduje, że mnożnik zostaje zastąpiony przez minus jeden, skutecznie odejmując zmienną pętli.

Neil
źródło
1

PHP , 28 bajtów, 33 Sekwencje, które zakładam

for(;;)print_r(range(0,32));

Wypróbuj online!

https://oeis.org/A000004 0 https://oeis.org/A007395 2 https://oeis.org/A010701 3 https://oeis.org/A010709 4 https://oeis.org/A010716 5 https://oeis.org/A010722 6 https://oeis.org/A010727 7 https://oeis.org/A010731 8 https://oeis.org/A010734 9 https://oeis.org/A010692 10 https://oeis.org/A010850 11 https://oeis.org/A010851 12 https://oeis.org/A010852 13 https://oeis.org/A010854 15 https://oeis.org/A010855 16 https://oeis.org/A010857 18 https://oeis.org/A010859 20 https://oeis.org/A010861 22 https://oeis.org/A010863 24 https://oeis.org/A010871 32

Jörg Hülsermann
źródło