Exibir sequências OEIS

29

A Enciclopédia On-Line de Sequências Inteiras (OEIS) é um banco de dados on-line de seqüências inteiras. Ele contém quase 280000 seqüências de interesse matemático.

Exemplos de sequências:

Sua tarefa é escrever um programa ou função que exiba o máximo de seqüências OEIS possível, com um código-fonte de no máximo 100 bytes . Seu programa deve aceitar como entrada o ID da sequência (sem os prefixos Ae os zeros) e gerar os 20 primeiros números nessa sequência.

Você não tem permissão para buscar os dados diretamente no site da OEIS; todas as sequências devem ser calculadas pelo seu código.

Pontuação

Score é o número de sequências OEIS que o programa pode exibir. As respostas terão que listar os IDs das sequências reconhecidas por seus programas.

Exemplo

Aqui está uma resposta válida no Java 8:

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

Este programa pode exibir os números inteiros positivos (A000027 - entrada 27) e os quadrados (A000290 - entrada 290), portanto, sua pontuação é 2.

Nota

Evite raspar o site inteiro da OEIS :-) você pode fazer o download dos nomes de sequência (cerca de 3 megas) ou valores da sequência (cerca de 9 megas). Observe que este download é coberto pelo Contrato de licença do usuário final da OEIS .

Arnaud
fonte
Podemos escrevê-lo para que ele tome os 0s principais?
TrojanByAccident
2
WHOO! Um desafio para a OEIS!
JungHwan Min 18/01/19
11
@TrojanByAccident se a sua ideia é ligar para OEIS, isso não é permitido em PPCG
Nathan Merrill
@NathanMerrill Eu não tinha certeza se isso contado neste caso
TrojanByAccident
As funções são permitidas?
Xnor

Respostas:

25

CJam ( 2182 2780 3034 sequências)

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

Isso fornece respostas corretas para os intervalos inclusivos

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

As A040???seqüências correspondem às frações contínuas de raízes quadradas não racionais de sqrt(2)até sqrt(1000)(com as lacunas correspondentes àquelas que aparecem anteriormente no OEIS, mas convenientemente preenchidas com sequências aleatórias). As A041???seqüências correspondem aos numeradores e denominadores da fração contínua convergente para raízes quadradas não racionais de sqrt(6)até sqrt(1000)(com a diferença correspondente a sqrt(10), em A005667 and A005668). As outras seqüências sortidas têm zeros para seus primeiros vinte valores.

A resposta contém elementos de duas respostas anteriores no GolfScript:

Muito obrigado ao xnor pela x -> x + round(sqrt(x))sequência curta de mapeamento de formulário fechado que compensa o valor para sqrt. A economia em relação ao meu cálculo anterior (gerando a lista de não quadrados e selecionando pelo índice) forneceu o suficiente para ter um retorno zero para a maioria dos índices fora da faixa.

Peter Taylor
fonte
Pode ser útil que o nono non-quadrado seja dado por n + round(sqrt(n))?
Xnor
@ xnor, bom. Tentei encontrar uma fórmula agradável, sqrt(n)mas não me ocorreu arredondar para o mais próximo do que para baixo. Isso proporciona uma economia imediata de três bytes, o que não é suficiente para adicionar um retorno, mas mantém a esperança viva.
Peter Taylor
35

Sequências Python 2, 875

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

Funciona para 875 das seqüências 21016 (dígitos decimais de 1/12) a 21999 (dígitos decimais de 1/995).

Encontrei esse pedaço com o sofisticado algoritmo de pesquisa de digitar aleatoriamente manualmente os IDs de sequência. Algumas das seqüências no intervalo não são desse formato e aparecem em outros lugares (obrigado a Mitchell Spector por apontar isso). Por exemplo, 21021 não é a expansão de 1/17.

Mesmo com as interrupções, as seqüências para 1 / n aparecem como id n+21004. O restante não é alterado, mas as seqüências ausentes aparecem em outro lugar. Por exemplo, 1/17 aparece como 7450 .

Contei os que correspondem usando uma cópia baixada dos nomes das sequências.

Um bloco diferente fornece 848 sequências de 16742 a 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)

Estes todos têm forma n -> (a*n+b)^c, onde 2≤a≤12, 0≤b<a, 1≤c≤12. O código extrai os coeficientes através da inversão de números e módulos triangulares. Como antes, nem todas as seqüências no jogo gama. Se essas duas expressões pudessem caber em 100 bytes, daria 1723 seqüências.

Prometendo pedaços:

  • 1929 sequências correspondentes: 41006 a 42397 , numeradores e denominadores de fração convergente contínua.
  • ~ 3300 seqüências correspondentes: 147999 a 151254 : contagem de passeios em Z ^ 3, se você puder encontrar como as listas de vetores são ordenadas.

Aqui estão categorias para outros blocos potenciais, agrupando os nomes de sequência OEIS removendo todos os números (dígitos, sinal de menos, ponto decimal). Eles são classificadas pelo número de ocorrências.

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 sequências:

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

Trabalha de 8585 (múltiplos de 3) a 8607 (múltiplos de 25) e 1018 (potências de 8) a 1029 (potências de 19). Convenientemente, estes são todos em um pedaço ordenado por ID.

Ele usa apenas 65 dos 100 bytes permitidos e ainda não está totalmente disponível, então procurarei outro bom pedaço.

xnor
fonte
haha, legal!
Maltysen 18/01/19
também, mais curto:lambda n:range(0,(n-8582)*20,n-8582)
Maltysen
@ Maltysen Spec disse programa, então eu fui com isso. Eu vou perguntar.
Xnor
2
Boa ideia, mas não acho que o intervalo 21016-21999 seja inteiramente recíproco. Por exemplo, A21021 é 1, 33, 727, 13365, 221431, 3428733, ..., não os dígitos decimais de 1/17. Não verifiquei quais sequências são recíprocas e quais não.
precisa saber é o seguinte
11
@xnor Não importa quantas correspondências você obtenha, você pode combiná-la com a minha resposta para adicionar outras 252 à contagem: se a entrada não estiver no intervalo 21016-21999, produza 20 0s. (Nenhuma das minhas 252 sequências encontram-se nesse intervalo.)
Mitchell Spector
29

Bash + coreutils, 252 sequências

yes 0|head -20

Experimente online!

Funciona em 252 sequências OEIS: A000004, A006983, A011734, A011735, A011736, A011737, A011738, A011739, A011740, A011741, A011742, A011743, A011744, A011745, A023975 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, 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 A070204, A070205, A070206, A072325, A072769, A076142, A082998, A083344, A085974, A085982, A086007, A086015, A089458, A093392, A094382, A105517, A108322, A1194382A111899, A112802, A122180, A129947, A137579, A159708, A161277, A161278, A161279, A161280, A165766, A167263, A178780, A178798, A180472, A180601, A181340, A181735, A1849 A185255, A185264, A185284, A191928, A192541, A197629, A198255, A200214, A206499, A210632, A212619, A217148, A217149, A217151, A217155, A217156, A228953, A235523, A2301535 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, A238403, A238403 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, A238403, A238403 A248805, A250002, A256974, A260502, A264668, A276183, A277165, A280492, A280815

Mitchell Spector
fonte
4
Heh, ideia fofa!
Jonathan Allan
12

Python (com sympy), 144 146 sequências

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

A função ffunciona para as 146 seqüências A016578 a A016723, inclusive.

Todos estes são emitidos pelo equipamento de teste em repl.it .

As 49 sequências A016578 a A016626 inclusive são as expansões decimais de log (3/2), log (5/2), log (7/2), ..., log (99/2).

As 97 sequências A016627 a A016723 inclusive são as expansões decimais de log (4), log (5), log (6), ..., log (100).

As duas primeiras das 49 começam na primeira casa decimal, uma vez que os valores de log para elas são menores que 1 , portanto, [-20:]leva as 20 casas decimais à direita do resultado da chamada na ...n(20)qual obtém 20 números significativos. Os if'.'<cfiltros fora o caráter casa decimal, e os int(c)moldes cada personagem restantes dígitos para um inteiro (embora talvez não seja necessário).

Jonathan Allan
fonte
10

Jelly, 1127 sequências de 1975

- atualmente, isso combina as descobertas de xnor e Mitchell Spector , mas ainda há espaço para crescimento em 78 bytes. Vá dar-lhes algum crédito!

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

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

TryItOnline!

As sequências de 1975 são:

  • os 252 que começam com vinte zeros (o comportamento de entrada fora de [16000,21999]);
  • as 848 sequências situadas no intervalo de 16742 a 17664 que correspondem à (a*n+b)**cfórmula (o comportamento de entrada [16000,17999]); e
  • as 875 sequências situadas no intervalo 21016 a 21999 que correspondem à expansão decimal de 1/n(o comportamento para entrada [18000,21999]).

Quão?

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
fonte
8

Mathematica, 39 173 189 sequências

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

Inspirado pela resposta de Jonathan Allan .

Trabalha para:

  • 1477 , 2837 , 4830 e 8554 (os primeiros 20 termos são {0, 1, 2, ... , 19})
  • 16578 a 16626 (expansão decimal do log (3/2), expansão decimal do log (5/2), ... expansão decimal do log (99/2))
  • 16627 a 16723 (expansão decimal do log (4), expansão decimal do log (5), ... expansão decimal do log (100))
  • 22958 a 22996 (2-n, 3-n, ... 40-n)
JungHwan Min
fonte
6

CJam, sequências 1831

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

Isso fornece a saída correta para o início de 199 seqüências 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0e todas as seqüências nos intervalos [A168680, A169579]e inclusivos [A170000, A170731]. A maior parte trata desses dois intervalos, com um fallback para todos os zeros antes do início do primeiro intervalo.

Os dois intervalos em questão têm a forma

Número de palavras reduzidas de comprimento n no grupo Coxeter em P geradores SEu com relações (SEu)2=(SEuSj)Q=Eu

para valores de P variando de 3 para 50. e valores de Q variando de 17 para 50.. Suas funções geradoras são dadas de maneira totalmente ineficiente: achei útil multiplicar numeradores e denominadores por(t-1 1) dar gf

tQ+1 1+tQ-t-1 11 12(P-2)(P-1 1)tQ+1 1-1 12(P-2)(P+1 1)tQ+(P-1 1)t-1 1
embora, para fins de golfe, eu esteja realmente trabalhando com R=P+3.
Peter Taylor
fonte
1

Lote, 62 sequências

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

Apenas implementar um bloco de seqüências foi difícil, mas consegui dois em 89 bytes! Explicação: Para um parâmetro %1de 8585-8607, 22956-%1>>16retorna zero, fazendo com que a (22956-%1)expressão seja ignorada e acabamos multiplicando a variável de loop por 3-25 respectivamente, enquanto que para um parâmetro de 22958-22996, ele retorna menos um fazendo com que a expressão seja negado, enquanto isso n|faz com que o fator de multiplicação seja substituído por menos um subtraindo efetivamente a variável do loop.

Neil
fonte
1

PHP , 28 bytes, 33 Sequências que eu assumo

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

Experimente 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
fonte