A partir de 13/03/2018 16:45 UTC, o vencedor é a resposta # 345 , de Scrooble . Isso significa que o concurso terminou oficialmente, mas fique à vontade para continuar postando respostas, desde que sigam as regras.
Além disso, basta um rápido grito para os três principais respondedores em termos de número de respostas:
1. NieDzejkob - 41 respostas
2. KSmarts - 30 respostas
3. Hyper Neutrino - 26 respostas
Esta é uma pergunta de encadeamento de respostas que usa sequências do OEIS e a duração do envio anterior.
Esta pergunta de encadeamento de respostas funcionará da seguinte maneira:
- Vou postar a primeira resposta. Todas as outras soluções devem resultar disso.
- O próximo usuário (vamos chamá-los de userA) encontrará a sequência OEIS na qual seu número de índice (veja abaixo) é igual ao comprimento do meu código.
- Usando a sequência, eles devem então codificar, em um idioma não utilizado , um programa que use um número inteiro como entrada, n e produza o enésimo número nessa sequência.
- Em seguida, eles postam sua solução após a minha e um novo usuário (usuárioB) deve repetir a mesma coisa.
O n
termo th de uma sequência é o termo n vezes após o primeiro, trabalhando com o primeiro valor sendo o primeiro valor fornecido em sua página OEIS. Nesta questão, usaremos a indexação 0 para essas seqüências. Por exemplo, com A000242 e n = 3
, o resultado correto seria 25 .
Contudo!
Este não é um código de golfe , portanto, o código mais curto não importa. Mas o tamanho do seu código ainda tem impacto. Para evitar a duplicação de seqüências, seu número de bytes deve ser exclusivo . Isso significa que nenhum outro programa enviado aqui pode ter o mesmo comprimento em bytes que o seu.
Se não houver uma sequência para o comprimento da última postagem, a sequência da sua postagem será a menor sequência não utilizada. Isso significa que as seqüências usadas também precisam ser únicas e que a sequência não pode ser a mesma que o seu número de bytes.
Depois que uma resposta for postada e nenhuma resposta nova for postada por mais de uma semana, a resposta antes da última postada (aquela que não quebrou a cadeia) vencerá.
Entrada e saída
Aplicam-se regras genéricas de entrada e saída. A entrada deve ser um número inteiro ou uma representação de sequência de um número inteiro e a saída deve ser o valor correto na sequência.
Formatação
Como na maioria das perguntas de encadeamento de respostas, formate sua resposta como esta
# N. language, length, [sequence](link)
`code`
[next sequence](link)
*anything else*
Regras
- Você deve esperar pelo menos 1 hora antes de postar uma resposta, depois de postar.
- Você não pode postar duas vezes (ou mais) seguidas.
- O número do índice de uma sequência é o número após a
A
peça e com os zeros à esquerda removidos (por exemplo,A000040
o número do índice é 40) - Você pode assumir que nem a entrada nem a saída exigida estarão fora do intervalo numérico do seu idioma, mas não abuse disso escolhendo um idioma que possa usar apenas o número 1, por exemplo.
- Se o tamanho do seu envio for maior que 65536 caracteres, forneça um link para uma maneira de acessar o código (pastebin por exemplo).
n
nunca será maior que 1000 ou estará fora dos limites da sequência, simplesmente para impedir que discrepâncias de precisão impeçam a concorrência de um idioma.- A cada 150 respostas (válidas), o número de vezes que um idioma pode ser usado aumenta. Portanto, depois que 150 soluções forem publicadas, todos os idiomas poderão ser usados duas vezes (com todas as respostas anteriores contando para isso). Por exemplo, quando 150 respostas foram postadas, o Python 3 pode ser usado duas vezes, mas devido ao fato de já ter sido usado uma vez, isso significa que só pode ser usado mais uma vez até que 300 respostas sejam postadas.
- Por favor, seja útil e poste um link para a próxima sequência a ser usada. Isso não é obrigatório, mas é uma recomendação.
- Versões diferentes de idiomas, por exemplo, Python 2 e Python 3 são idiomas diferentes . Como regra geral, se as duas versões diferentes estão disponíveis no Try It Online, são idiomas diferentes, mas lembre-se de que essa é uma regra geral e não uma resposta rígida.
- Não é proibido, mas tente não copiar o código da página OEIS e tente resolvê-lo.
- A codificação física é permitida apenas se a sequência for finita. Observe que a resposta que solicitou isso ( nº 40 ) é a exceção à regra. Algumas respostas no início do código rígido da cadeia, mas elas podem ser ignoradas, pois não adianta excluir a cadeia até, digamos, # 100.
Resposta em cadeia
fonte
float
/ internodouble
, a fim de produzir valores para valores maioresn
?Respostas:
345. brainfuck , 162 bytes, A000301
Experimente online!
Próxima sequência!
Isso leva como entrada o caractere com ponto de código
n
(pelas especificações de BF) e gera da mesma maneira. Para ver os números, sugiro usar o EsotericIDE de @ Timwi .Explicação:
Como isso armazena todos os números de Fibonacci até o mais importante, haverá uma falha na entrada realmente grande em uma fita delimitada.
Isso pode ser reduzido significativamente se você codificar a base (2), mas a golfidade não é um problema.
fonte
22. FiM ++ , 982 bytes, A000024
Próxima sequência
fonte
1. Triangular , 10 bytes, A000217
Experimente online!
Próxima sequência
Como funciona
O código formata esse triângulo
com o IP iniciando no
$
e movendo-se para o sudeste (SE, heh), funciona assim:fonte
A000217 Triangular numbers
...73. Estrelado , 363 bytes, A000252
Experimente online!
Próxima sequência
Usa a fórmula "
a(n) = n^4 * product p^(-3)(p^2 - 1)*(p - 1)
onde o produto está sobre todos os números primos p que dividem n" do OEIS.A lua não funciona, mas, ei, isso não é golfe de código.
fonte
97. Python 3 (PyPy) , 1772 bytes, A000236
Antes de tudo, muito obrigado ao Dr. Max Alekseyev por ser paciente comigo. Tenho muita sorte de poder entrar em contato com ele por e-mail para entender esse desafio. Sua resposta Math.SE aqui me ajudou muito. Agradeço ao Wheat Wizard por me ajudar também. :)
Experimente online!
Se der o resultado errado, basta aumentar 100 para algo maior. Eu acho que 10000 funcionará para 4, mas deixarei meu computador funcionando durante a noite para confirmar isso; pode demorar algumas horas para terminar.
Observe que a parte (PyPy) é apenas para que eu possa usar o Python novamente. Realmente não conheço muitas outras linguagens e não vou tentar portar isso para Java e arriscar não terminar a tempo.
Próxima sequência (também não faça mais coisas matemáticas malucas; não tenho mais versões em Python, para que alguém tenha que salvar esse desafio D :)
fonte
107. TrumpScript , 1589 bytes, A000047
Experimente online!
Na primeira programação em TrumpScript, é possível que eu tenha reinventado a roda algumas vezes - 4 linhas são dedicadas ao cálculo de 2 ^ n. Tentei fazer parecer algo que Trump (bêbado) poderia dizer. Como bônus, aqui está um script Python que escrevi para verificar se estou fazendo tudo certo. Existem algumas diferenças no programa acima, mas grande parte é diretamente equivalente.
Próxima sequência!
fonte
I will make cat feel good
O_OI will make Business Cat feel good
não vai funcionar ...30. Python 1 , 1112 bytes, A000046
Experimente online!
Nem vai se incomodar em jogar isso. Ei, não é a minha resposta mais longa em Python neste site!
Próxima sequência
fonte
_
é irrelevante; só precisamos repetir isso muitas vezes2. Haskell, 44 bytes, A000010
Experimente online!
Próxima sequência
fonte
9. Pyth , 19 bytes, A000025
Conjunto de teste .
Próxima sequência
fonte
>Q0
vez deQ
, a fim de, você sabe, ter a próxima sequência como A000019.Keywords: easy,nice
8. Mathematica (10.1), 25 bytes, A000070
Próxima sequência
fonte
206. Próton , 3275 bytes, A000109
Experimente online!
Próxima sequência
fonte
308. ENIAC (simulador) , 3025 bytes, A006060
Pseudo-código:
Sem simulador online, resultado da execução:
Registradores e constantes:
Programe fluxo de sinal e fluxo de dados:
"Código" completo no pastebin ou nos comentários HTML na marcação desta resposta, para impedir que o linkrot e uma resposta bastante longa percorram ao mesmo tempo. Isto é divertido!
Próxima sequência
fonte
15. CJam, 85 bytes, A000060
Demonstração online
Próxima sequência
Dissecação
OEIS dá
Onde
fonte
67. LOLCODE , 837 bytes, A000043
Minha tecla capslock está fadada a escapar, então eu escrevi essa coisa toda enquanto pressionava shift.
Experimente online!
Próxima sequência
fonte
PRAIME
upper
d-it-.gggUG
no vim onde eu escrevi isso, mas eu não sou tão inteligente10. Magma, 65 bytes, A000019
Experimente aqui
lol builtin
Próxima sequência
fonte
24. Julia 0.5 , 33 bytes, A000023
Expansão de egf exp (−2 * x) / (1 − x).
Experimente online!
Próxima sequência.
fonte
121. Pip , 525 bytes, A000022
Demonstração online
Próxima sequência
Curiosidade: quando o desafio foi lançado pela primeira vez, elaborei uma lista de pequenos números de sequência desagradáveis que desejava apontar com o CJam e o A000022 estava no topo da lista.
Isso implementa a função geradora descrita em EM Rains e NJA Sloane, On Cayley's Enumeration of Alkanes (or 4-Valent Trees) , Journal of Integer Sequences, vol. 2 (1999), levando a soma para tantos termos quanto necessário para que o coeficiente fosse fixado e depois telescopando três quartos da soma. Em particular, telescopar a primeira metade significa que o índice de ciclo apenas deve ser aplicado a uma delas e não a todas elas.
Ck
n
S4
Th
O código é dividido como
Note que este é o meu primeiro programa Pip, então provavelmente não é muito idiomático.
fonte
156. C # (Mono), 2466 bytes, A000083
Nota: a pontuação é 2439 bytes para o código e 27 para o sinalizador do compilador
-reference:System.Numerics
.Demonstração online . Este é um programa completo que recebe informações da linha de comando.
Próxima sequência
Dissecação
Sigo o comentário de Bowen no OEIS de que a função geradora em
A000083(x) = A000237(x) + A035349(x) - A000237(x) * A035350(x)
que o componente gerador de funções está relacionada por transformações comoA000237(x) = x EULER(A035350(x))
A035350(x) = BIK(A000237(x))
A035349(x) = DIK(A000237(x))
Uso as definições de
BIK
eDIK
de https://oeis.org/transforms2.html, mas as fórmulas parecem ter vários erros de digitação. CorrigiLPAL
sem muita dificuldade e derivou independentemente uma fórmulaDIK
baseada na aplicação da enumeração de Pólya ao índice de ciclo do grupo diédrico . Entre os números 121 e 156, estou aprendendo muito sobre a enumeração de Pólya. Enviei algumas erratas , que podem ser úteis para outras pessoas se essas transformações surgirem novamente na cadeia.fonte
3. JavaScript (ES6), 38 bytes, A000044
Experimente online!
Próxima sequência (deve ser fácil: P)
fonte
13. VB.NET (.NET 4.5), 1246 bytes, A000131
A001246
Experimente Online!
fonte
91. Python 2 (PyPy) , 1733 bytes, A000066
Experimente online!
Espero que o uso do Python 2 PyPy conte como outra versão principal. Se alguém pudesse me conseguir um intérprete Python 0, eu também poderia usá-lo, mas espero que isso seja válido.
Isso começa em 1 vértice e funciona, criando a representação da matriz de adjacência de todos os possíveis grafos não direcionados com tantos vértices. Se for trivalente, ele examinará o conjunto de potências das arestas, que serão classificadas por comprimento. Se o primeiro ciclo encontrado for muito curto, ele seguirá em frente. Se o primeiro ciclo encontrado corresponder à entrada (deslocamento de 3), ele produzirá a contagem correta de vértices e terminará.
Próxima sequência <- tenha uma fácil como uma pausa de toda essa bobagem matemática: D
EDIT : Adicionei algumas otimizações para torná-lo um pouco mais rápido (ainda não é possível calcular o terceiro período dentro do limite de 60 segundos do TIO) sem alterar o número de bytes.
fonte
232. Funky ,
326330332 bytes, A000938Experimente online!
Poliglota com Javascript. Experimente online!
Próxima sequência .
Use a fórmula na página OEIS para
O(n^2 log n)
complexidade, em vez de ingênuoO(n^6)
.Explicação rápida:
a[n_] := 2*Sum[(n - k + 1)*(n - m + 1)*GCD[k - 1, m - 1], {m, 2, n}, {k, 2, n}] - n^2*((n^2 - 1)/6)
descrita na seção de código do Mathematica.Prova de fórmula:
A fórmula é equivalente a isso .
Seja o tamanho da caixa delimitadora de três pontos
m * k
. Considere 2 casos:k != 0
em != 0
: Existem 2 maneiras de escolher a orientação dos três pontos (\
ou/
),gcd(k-1, m-1)-1
maneiras de escolher o ponto entre os outros 2 pontos e(n - k) × (n - m)
maneiras de escolher a posição da caixa delimitadora.k == 0
oum == 0
: existem 2 maneiras de escolher a orientação (|
ou-
),n
maneiras de escolher a linha / coluna na qual os pontos se encontram eBinomial[n, 3] == (n*(n-1)*(n-2)) / 6
maneiras de escolher os pontos nessa linha / coluna.Algumas notas poliglotas:
return
. No entanto, como o ATaco explicou , [Funky] acha quereturn
é uma variável. Portanto, ele está analisando a expressão, que convenientemente não faz nada, e analisa a próxima expressão. E isso é usado como uma saída.^
como xor bit a bit, diferente do Funky, que usa^
como exponenciação. Então,n*n
tem que ser usado em vez den^2
garantir a compatibilidade com Javascript.+
,-
,*
, etc.) têm a mesma precedência e associativos à direita, então expressões precisam ser entre parênteses corretamente.fonte
11. Pari / GP, 64 bytes, A000065
Experimente online!
Próxima sequência
fonte
;_; I solved A000064 and you changed it. Downvoted.
281. Java 5, 11628 bytes, A000947
Experimente online!
Nota:
Isso pode quebrar a corrente.Novo recorde em grande bytecount!Como eu (por engano?) Uso espaços em vez de guias, o número de bytes é maior que o necessário. Na minha máquina são 9550 bytes. (no momento da redação desta revisão)20
emfor (int i = 0; i < 20; ++i)
a1000
)Yay! Isso pode calcular mais termos do que os listados na página OEIS! (pela primeira vez, para um desafio que preciso usar Java), a menos que o OEIS tenha mais termos em algum lugar ...
Explicação rápida
Explicação da descrição da sequência.
A sequência solicita o número de polenoides não planares livres com grupo de simetria C 2v , em que:
Por exemplo, considere as árvores
O primeiro não pode ser incorporado na estrutura hexagonal, enquanto o segundo pode. Essa incorporação específica é considerada diferente da terceira árvore.
(2)
e a(3)
árvore acima são planares. Este, no entanto, não é plano:(existem 7 vértices e 6 arestas)
Por exemplo, o único polenoide com 2 vértices
possui 3 planos de reflexão: o horizontal
-
, o vertical|
e o paralelo à tela do computador■
. Isso é demais.Por outro lado, este
tem 2 planos de reflexão:
/
e■
.Explicação do método
E agora, a abordagem sobre como realmente contar o número.
Primeiro, aceito a fórmula
a(n) = A000063(n + 2) - A000936(n)
(listada na página OEIS) como garantida. Não li a explicação no jornal.[TODO conserte esta parte]
Obviamente, contar planar é mais fácil do que contar não planar. É o que o jornal também faz.
Então ... o programa conta o número de polienoides planares e subtrai-o do total.
Como a árvore é plana de qualquer maneira, obviamente tem o
■
plano de reflexão. Portanto, a condição se resume a "contar o número de árvores com um eixo de reflexão em sua representação 2D".A maneira ingênua seria gerar todas as árvores com
n
nós e verificar a simetria correta. No entanto, como queremos encontrar apenas o número de árvores com um eixo de reflexão, podemos gerar toda a meia-árvore possível em uma metade, espelhá-las através do eixo e verificar a simetria correta. Além disso, como os polienoides gerados são árvores (planares), devem tocar o eixo de reflexão exatamente uma vez.A função
public static Graph[] expand(Graph[] graphs, Point.Predicate fn)
pega uma matriz de gráficos, cada um temn
nós, e gera uma matriz de gráfico, cada um temn+1
nós, não iguais entre si (em conversão) - de modo que o nó adicionado deve satisfazer o predicadofn
.Considere dois eixos possíveis de reflexão: um que passa por um vértice e coincide com as arestas (
x = 0
) e outro que é o bissetor perpendicular de uma aresta (2x = y
). Podemos usar apenas um deles, porque os gráficos gerados são isomórficos.Portanto, para o primeiro eixo
x = 0
, partimos do gráfico base composto por um único nó(1, 0)
(cason
seja ímpar) ou dois nós com uma aresta entre(1, 0) - (2, 0)
(cason
seja par) e depois expandimos os nós de modo quey > 0
. Isso é feito na seção "Tipo de reflexão 1" do programa e, em seguida, para cada gráfico gerado, reflita (espelhe) o próprio eixo Xx = 0
(g.reflectSelfX()
) e verifique se a simetria correta está correta.No entanto, observe que se
n
é divisível por 2, dessa forma contamos cada gráfico duas vezes, porque também geramos sua imagem no espelho pelo eixo2x = y + 3
.(observe os 2 laranja)
Semelhante para o eixo
2x = y
, se (e somente se)n
é ainda, começamos a partir do ponto(1, 1)
, gerar gráficos de tal forma que2*x > y
, e refletir cada um deles ao longo do2x = y
eixo (g.reflectSelfType2()
), conectar(1, 0)
com(1, 1)
, e verificar se eles têm simetria correta. Lembre-se de dividir por 2 também.fonte
6. R , 71 bytes, A000072
Experimente online!
Próxima sequência
fonte
the answer before the last posted (the one who didn't break the chain) will win
14. Python 2 , 60 bytes, A001246
Experimente online!
Próxima sequência.
fonte
26. TI-BASIC, 274 bytes , A000183
Avalia a fórmula recursiva encontrada no link OEIS.
Próxima sequência
fonte
34. Prolog (SWI) , 168 bytes, A000073
Experimente online!
Próxima sequência
fonte
49. SageMath , 74 bytes, A000003
Experimente online!
Próxima sequência
fonte
76. Pigmeu , 4147 bytes, A000036
Próxima sequência
Você pode executar o código nesta página . Por exemplo, você pode obter o 10º número na sequência copiando o código acima e adicionando:
fonte