Este é um desafio de encadeamento de respostas relacionado ao OEIS.
Ah, a justificativa para isso é porque uma empresa precisa de um programa para imprimir suas seqüências OEIS muito ruins e elas têm todos os idiomas.
O formato de encadeamento de respostas funciona da seguinte maneira:
Alguém postou a primeira resposta, da qual todas as outras soluções derivam. Esta resposta é um programa que, dado um número N, insere o número enésimo na sequência OEIS de qualquer índice que escolher (chamaremos de sequência 1), em qualquer idioma que escolherem (idioma 1)
Outra pessoa aparece e escolhe sua própria sequência (que deve ser diferente da anterior e de todas as seqüências anteriores). Eles criam um programa, em outro idioma (que deve ser diferente de todos os idiomas anteriores), que, dado um número N no idioma 1, gera o enésimo número da sequência 1 e, dado um número no idioma 2, gera o enésimo número da sequência 2)
Esse processo continua ad infinitum.
O enésimo termo de uma sequência é o termo que vem n vezes após o primeiro, trabalhando a partir do primeiro item. Aqui usamos a indexação 0 e 1, para facilitar os codificadores!
Não há reutilização de idioma ou sequência.
A entrada deve ser um número inteiro ou uma representação de seqüência de caracteres de um número inteiro e a saída deve ser o valor correto da sequência. O tratamento de erros (entrada não int) não é necessário.
Você não deve postar duas vezes seguidas.
Você deve esperar uma hora ou mais antes de publicar novamente.
Quem for o penúltimo a postar após uma semana sem respostas (a pessoa que não quebrou a cadeia) vence, embora o concurso possa continuar indefinidamente. Se você é o último e pode mostrar que pode adicionar mais um idioma, continue o desafio até o próximo vencedor.
Você pode assumir que a entrada ou a saída não estará fora do intervalo numérico do seu idioma (por exemplo, assumindo que o limite do IEEE não será ultrapassado por nenhuma sequência), mas não seja um trapaceiro e abuse disso usando um idioma que possui apenas 1.
Qualquer sequência pode ser escolhida, desde que não tenha sido usada antes.
A entrada não pode estar fora dos limites da sequência que você está usando.
Duas versões de idiomas diferentes são linguagens diferentes (Python 2 e Python 3 são considerados diferentes idiomas próprios). Isso não é rígido, mas como regra geral, se for separado de outra versão do mesmo idioma no TIO, é diferente.
Isso não é proibido, mas tente uma vez não usar a fórmula fornecida pelo OEIS.
Se o seu código resultante tiver mais de 65536 caracteres, forneça um link para acessá-lo (por exemplo, Pastebin).
É isso e é tudo. Pronto? Conjunto? DIVERSÃO!
Sim, este é "um OEIS após o outro", mas é multijogador. Eu pensei que seria legal.
Respostas:
15. Comentador , A020739
Experimente online!
C #
Brainfuck
Encantos rúnicos
Jelly
Gol> <>
Javascript (Node.js) (Todos os 1s)
Espaço em
branco parênteses (Todos os 3s)
05AB12 (Todos os 0s) Largura de grama
ilegível AlphaBeta Aheui (Todos os 2s)
Eu tinha alguns planos com o Commentator, mas apenas um sobreviveu ao contato com todos os outros idiomas. Um causou erros no Jelly (iirc) e eu não consegui resolvê-lo porque não sei por que o Jelly interpretou os bytes da maneira que fez.
fonte
/\
e sua mana. Você poderia dar uma breve explicação sobre qual é o fluxo de execução neste último número? 15 resposta é para encantamentos rúnicos?><^v
. O único momento em que começa no canto superior esquerdo é se o código não contiver nenhum desses bytes e tiver apenas uma linha. Portanto, este poliglota tem um monte de IPs em Runic, mas o único que faz qualquer coisa (atualmente) é esta:>2?1:40-n/
. Os2?
saltos os1:
e assim as primeiras instruções sãopush 4, push 0, subtract
(4-0 → 4). Então, nada acontece até chegar ao/ip@
que resulta emtake input, pow(y,x), print-and-terminate
.4. Jelly , A000312
C # (Compilador Interativo Visual C #)
brainfuck Jelly
Enchantments Runic
Explicação:
Contamos apenas com a última linha, todas as outras linhas são ignoradas.
Para fazer o C # ignorar o código, estamos tentando colocá-lo em um comentário. No entanto, uma linha iniciada por2z= zz
/
não é válida no Jelly, porque/
precisa de um operando. O operando que estamos usando aqui é;
, pois ele também se encaixa perfeitamente como ponto e vírgula em C #. De fato, o ponto-e-vírgula e o comentário multi-linhas vazio juntos formam um link que calcula 2 z = z z . Observe que o envio da função em C # ainda é válido, pois não há consenso geral que não permita várias instruções no envio de uma função anônima (por exemplo, importações).fonte
16. Java 8 , A000290
Nunca pensei que veria o dia em que seria capaz de adicionar uma resposta Java como 16ª resposta em uma cadeia poliglota! : D
1. Experimente em C #:a ( n ) = 40 - n a ( n ) = 1 + n mod 2 a ( n ) = 4n a ( n ) = nn a ( n ) = - n a ( n ) = 1 a ( n ) = 1 se xn+ yn= zn tem uma solução não trivial em números inteiros, caso contrário a ( n ) = 0 a ( n ) = 3 a ( n ) = 0 a ( n ) = n um ( n ) = ⌊ n / 10( ⌊lo g10( n ) ⌋ )⌋ a ( n ) = n + 1 com n ≥ 2 a ( n ) = 1 ∥ n a ( n ) = 2 a ( n ) = 2 n + 6 a ( n ) = n2
2. Experimente em cérebro:
3. Experimente em Encantos Rúnicos:
4. Tente em Jelly:
5. Experimente em Gol> <>:
6. Experimente em JavaScript:
7. Experimente em Parenthetic:
8. Experimente no espaço em branco:
9 Experimente em 05AB1E:
10. Experimente em Ilegível:
11. Experimente em Grass:
12. Experimente em Largura:
13. Experimente em AlphaBeta:
14. Experimente em Aheui:
15. Experimente no Commentator.
16. Experimente no Java 8:
Explicação:
Deixe-me começar dizendo que, embora tenha ouvido falar de cada uma dessas linguagens antes aqui no CGCC, só sou habilitado em Java, C #, 05AB1E e Whitespace e, além disso, pode ler a parte JavaScript do código. Como as outras linguagens não são familiares para mim, esperava que, depois das mudanças que eu tinha em mente, fizesse o Java interagir com C # / JavaScript, a maioria das outras linguagens ainda funcionaria.
A primeira coisa principal a enfrentar foi o Java
n->
vs C # / JavaScriptn=>
. Java suporta valores unicode como parte do código, usando o seguinte:Será interpretado como este em C # / JavaScript:
Mas como isso em Java:
Isso ocorre porque
\u000A
é uma quebra de linha,\u002F
é/
e\u002A
está*
em Java.Em seguida, para diferenciar a sequência entre Java e C # / JavaScript, adicionei o seguinte:
ondea ( n ) = n2 ).
...
está o existente5/2>2?1:40-n
en*n
é a parte Java do código para a sequência oeis A000290 (quadrados akaPor que isso funciona? Em Java Strings are Objects, onde
==
é usado para verificar se as referências de objetos estão apontando para o mesmo local (ou para verificar se as primitivas são iguais) e a realObject.equals(Object)
deve ser usado para verificar se os valores desses objetos são iguais. O""+n==""+n
mesmo acontece com falsey em Java, mas em C # / JavaScript.Depois que isso foi resolvido (reutilizando as novas linhas existentes para não interromper o programa Whitespace), algumas coisas tiveram que ser corrigidas. Quatro dos programas existentes estavam falhando agora: encantamentos rúnicos, geléia, ilegível e comentarista.
A correção para Ilegível foi fácil. Nós adicionamos quatro
""""
antes da primeira'
, então simplesmente colocamos a em'
algum lugar mais cedo (eu a coloquei no final da primeira linha) e removemos as'""""
da parte Ilegível do código na parte inferior.Depois disso veio Jelly, que estava dando uma
IndexError: pop from empty list
. Eu não sou muito habilidoso em Jelly, então não sei exatamente por que isso deu esse erro. Se bem me lembro, a última linha será o link principal de um programa Jelly, e como o código nessa última linha não usa nenhum dos outros links, todo o resto deve ser ignorado. Mas de alguma forma a parte""+n==""+n
ainda deu alguns problemas. Consegui consertar isso adicionando/**/
na frente dessa linha.Quanto aos encantamentos rúnicos, ele não produzia mais nada. @ Draco18s me indicou que os Encantos Rúnicos começam
>
simultaneamente, mas apenas os>2?1:40-n/
e/ip@
eram relevantes. Esta foi uma grande ajuda para entender o fluxo do programa Encantos da Rúnica, e eu pude corrigir o caminho adicionando um/**/
at>2?1:40-/**/n:n*n
e alterando as posições do//ip@
,//
e espaço na última linha.Tudo o que resta foi comentarista. Naquele momento, percebi que minhas correções anteriores de adição
/**/
não eram uma boa idéia, afinal, uma vez que geraria um monte de lixo adicional devido aos componentes internos/*
(converter ativo em caractere e saída unicode) e*/
(saída ativa como número) ..>.> Depois de um pouco de mexer e tentar algumas coisas, a correção acabou sendo muito fácil: eu adicionei ume
antes do#
na primeira linha.e#
é o builtin para negar um ativo, corrigindo os problemas causados pelo código que adicionei (aparentemente).fonte
6. JavaScript (Node.js) , A000012
C # (A022996) : Como
5/2==2
a função retorna40-n
(Linha 2)BF (A000034) : A parte adicionada apenas empurra a fita inteira uma célula para a direita, outras inalteradas (Linha 2-3)
Rúnico (A000302) : O
?
depois2
pula as1:
operações e outras seguem de4
(Linha 2)Gelatina (A000312) : última linha inalterada
Gol> <> (A001489) : primeira coluna inalterada
JS (ES6) (A000012) : Como
5/2>2
a função retorna1
(Linha 2)Infiltrou o ternário
5/2>2?1:40-n
na parte C #. Em C # desde que5/2==2
a função retorna40-n
, enquanto em JS5/2>2
as funções retornam 1. Os comentários no estilo C tornaram quase impossível adicionar linguagens mais práticas (especificamente C e Python). Mais espaços são adicionados nas linhas 4-5 para garantir que a parte rúnica funcione.fonte
The C-style comments made it nearly impossible to add more practical languages (specifically C and Python).
Essa é a maneira dos desafios poliglotas.8. Espaço em branco , A010701
Experimente online!
C #
Brainfuck
Runic
Jelly
Gol> <>
Javascript
Paranthetic
Não faço ideia de como o Whitespace funciona. Tentei muito multiplicar a entrada por outro valor, mas ele continuava reclamando da aritmética do infix, assim como eu trabalhava na entrada, na saída e no push-value-to-stack, então continuei com isso.
O valor de entrada parece se perder ao empurrar
3
para a pilha, mas tudo bem. Desfrute de uma sequência de 3s. Tecnicamente, o programa recebe entrada , acaba descartando-a.Também não sei como o Paranthetic funciona, por isso não posso verificar se o envio é válido, mas, até onde sei, o código de espaço em branco não interfere.
Respostas futuras: esteja ciente de que as guias no Runic são uma única instrução ampla e causam estragos no layout do código.
fonte
[{10: input}]
. Para criar um programa de gato que lê e produz imediatamente no espaço em branco, você geralmente deseja fazer algo como: Pressione 0; duplicar 0; leia STDIN; recuperar (isso exibirá o 0 duplicado e empurre o valor do endereço de pilha 0 para empilhar); pop e saída para STDOUT. PS: Aqui, sempre utilizo um depurador on-line útil.11. Grama , A000030
Experimente online!
Grass ignora todos os caracteres
w
, exceto ,v
eW
; convenientemente, esses três caracteres são ignorados por vários dos idiomas usados anteriormente. Felizmente, a sequência A000030 (retornar o dígito inicial na base 10) ainda estava disponível, pois a codificação de funções ainda um pouco complicadas no Grass está além da minha capacidade.C #
brainfuck
Runic
Jelly
Gol> <>
JavaScript
parentético
Whitespace
05AB1E
ilegível
A parte relevante para Grass é
wvWwwWWwwwwwwWwWWWw
. Aqui está o meu (provavelmente falho) entendimento de como ele funciona: a pilha é inicializada comoOUT::SUCC::w::IN::ε
(essew
é apenas o personagemw
). Cada instrução adiciona um elemento à pilha (eles nunca são exibidos); o número dew
s ouW
s indica a profundidade da pilha;v
separa as instruções.Se a entrada é
1234
, no final, a pilha provavelmente se parece com isso:1::1::id IN::id OUT::id::OUT::SUCC::w::IN::ε
.Pode ser reduzido (não é necessário definir
id OUT
por exemplo), mas parei assim que encontrei uma versão que funcionava.Se alguém que conhece Grass quiser corrigir / melhorar a explicação, edite minha resposta!
fonte
17. Pepe , A000578
Intérprete Online
C #
Brainfuck
Encantos rúnicos
Jelly
Gol> <>
Javascript (Node.js) (Todos os 1s)
Espaço em
branco parênteses (Todos os 3s)
05AB12 (Todos os 0s) Largura de grama
ilegível AlphaBeta Aheui (Todos os 2s) Comentador Java
Você terá que desculpar o link Pepe por não conter a fonte completa: O intérprete desconsidera qualquer código que não seja Pepe (aceso. Qualquer caractere que não esteja no conjunto
RE re
) e, portanto, seu link curto não se preocupa em codificá-lo. O mesmo vale para os valores de entrada.O AlphaBeta começou a gerar erros após escrever a saída, mas como resposta anterior injetou esse problema, eu o deixei em paz. Eu tinha planejado corrigi-lo para esta resposta, mas preciso dedicar algum tempo a analisar as compensações de salto para resolver o problema. O erro com as entradas
>0
é fácil de corrigir, mas fornecer0
o mesmo erro e levar um tempo para reaprender o código, a fim de corrigir o deslocamento para ele. Eu gostaria de poder usar emW
vez deUUUUUUUUUU
, mas isso causa estragos no código Grass.fonte
1. C # (compilador interativo do Visual C #) A022996
Também funciona em C # (.NET Core), C # (compilador Mono C #), C # (Shell mono C #) e C # (Visual C # Compiler)
Experimente online!
fonte
9. 05AB1E , A000004
C # (compilador interativo de Visual C #)
brainfuck
Encantos rúnicos
Jelly
Gol> <>
JavaScript (Node.js) Espaço em branco
parênteses 05AB1E
fonte
7. Parenthetic , A019590
C # (A022996)
BF (A000034)
Rúnico (A000302)
Gelatina (A000312)
Gol> <> (A001489)
JS (ES6) (A000012)
Parêntese (A019590)
Parenthetic ignora tudo, menos os caracteres
(
e)
. Eu tive que inserir1
s antes de todos os parênteses de fechamento para impedir que Jelly surtasse (EDIT: eu deixei um)
sem precedentes por 1, então aparentemente nem todos eles precisam de um, mas é tarde demais para jogar agora). O código real define um lambda chamado((()))
, que pode ser chamado em um número para produzir o resultado (indexado 1).fonte
((()))
. O rodapé chama essa função, com qualquer argumento que você desejar. O conjunto de parênteses sob o número 2 significa 2 em Parenthetic. Alterar a final()()
para()
* n ativará a funçãon
.10. ilegível , A001477
Experimente online!
C #
Brainfuck
Runic
Jelly
Gol> <> Espaço em branco paranthetic
Javascript 05AB1E
Ilegível, como o próprio nome sugere, é ilegível. Para programá-lo, tive que usar um modelo e depois converter de texto legível em código ilegível.
Tudo o que faz é ler cada caractere na entrada e enviá-lo. Uma das sequências mais chatas, mas boa para um idioma difícil de trabalhar. Também brinquei com o uso da sequência A000030 antes de fazer o loop funcionar.
Trabalhar na área de trabalho remota é uma dor, você acha que as coisas funcionam, faz todos os links e percebe que um deles quebrou e não percebeu.
fonte
;/**/
área do meio não está fazendo nada e pode ser removida. 99% de certeza. Era um pedaço de geléia, mas foi duplicado em algum lugar ao longo do caminho e não serve mais a um propósito.14. Aheui , A007395
Ligeiramente alterado para fazer o AlphaBeta funcionar.
Experimente online!
Aheui rejeita qualquer caractere não coreano, tão
박망희
excutado, que imprime2
e termina.C #
Brainfuck
Encantos rúnicos
Jelly
Gol> <>
Javascript (Node.js) Espaço em branco
parênteses 05AB12 Largura ilegível da grama AlphaBeta Aheui
fonte
/*
e funciona agora. E o código Aheui é (um pouco mais) bom de ver.2. brainfuck , A000034
Experimente online!
C #
fonte
3. Encantos Rúnicos , A000302
Experimente online!
C #
BF
Se você precisar de ajuda para manter o Runic funcional, existe o IDE Esotérico e o meu próprio IDE (incorporado no Unity3D) no ramo principal do repositório git do Runic . O IDE esotérico não lida com a exibição da direcionalidade do IP muito bem (principalmente minha própria incapacidade de adicionar isso à estrutura existente).
Todo o BF cria um monte de IPs que terminam automaticamente devido à execução de ações inválidas (principalmente devido ao fluxo insuficiente da pilha) enquanto
>
o C # preenche a pilha com a4
, rejeições dos criadores de comentários (espelhos no Runic), alcançandoip@
a execuçãox^4
em um insira xe imprima o resultado.fonte
5. Gol> <> , A001489
Experimente online!
C #
Brainfuck
Runic
Jelly
Use marcadores de comentário de linha única em C # para redirecionar o IP do Fish para o código operacional,
I01-*h
, lendo a entrada, multiplicando por -1 e exibindo o resultado. Gol> <> facilitou a leitura e despejou a pilha como um número em comparação com o bruto> <>.Espaços inseridos para garantir o fluxo adequado dos IPs Fish e Rúnico, onde C # e Jelly ignoram o espaço em branco líder na última linha (e é uma célula NOP nos dois fungoides).
fonte
12. Largura , A020725
1 indexado. Saídas por código de saída.
Experimente online!
Os únicos caracteres relevantes para Largura são
a-zA-Z
. O código Width é o seguinte:Os três primeiros caracteres
qnn
,, são no-ops.Ac
lê um número inteiro da entrada,a
é um no-op e, em seguida,AcAA
incrementa o número inteiro em um.I
finaliza o programa e o topo da pilha se torna o código de saída. Todas as outras letras do programa são ignoradas desde que o programa foi encerrado.C #
brainfuck
Encantamentos rúnicos
Jelly
Gol> <> Espaço em branco parênteses
JavaScript 05AB1E Grama ilegível
fonte
13. AlphaBeta , A162672
Experimente online!
Inicialmente, eu planejara usar a sequência A000030 e o código
JCL
, mas isso foi interrompido (não os culpo, é uma boa sequência para idiomas que recebem entrada como bytes únicos). O código original para esta entrada depois de ter que escolher uma nova sequência era:Sequências de
xxx
ouxyzxyz
são espaçadores úteis para facilitar o salto para os valores (46 é mais fácil como "5 * 10-4" - 9 instruções - do que "4 * 10 + 6 - dez instruções - mas 50 é par mais simples: apenas cinco) Você verá alguns deles.Mas como existem outros bytes na primeira linha, os codels de salto precisavam de alguns novos valores e que se transformaram em:
Evitar a execução desse código como código Width envolveu envolvê-lo
G
para torná-lo uma string literal (o que não faz nada importante no AlphaBeta), um comando para abrir a parte superior da pilha e mais algunsW
para impedir que o alfa beta travasse ao sair:Para evitar conflitos com o Grass, no entanto, em vez de exibir o comando,
w
C
é usado. Em seguida, o salto "exit program" é substituído por, emUUUUUU
vez deWWWWWW
This, deixa o IP em algum lugar no meio do restante do código indesejado, mas longe o suficiente para que ele não imprima nenhum erro. Qualquer número deU
s adicionais pode ser adicionado em pares, se isso se tornar um problema.O adicional
i
que o Runic acaba executando é um NOP em entradas válidas, já que nenhuma entrada deixada para ler não empurra nada para a pilha ("ler todas as entradas" é um problema no Runic).C #
brainfuck
Encantos rúnicos
Jelly
Gol> <> Espaço em branco parênteses
JavaScript 05AB1E Largura ilegível da grama
fonte
18.] = [, A010716 , a sequência dos 5
Esse idioma não está no TIO e seu único intérprete está escrito em outro idioma interpretado, que também não está no TIO. E o que não foi legal com Brainfuck na semana passada, no último minuto, mas descobri o que havia de errado algumas horas depois de postar a resposta em Pepe, então guardei para esta semana. Sendo um idioma que não está no TIO, eu estava considerando este um ás-no-buraco que poderia ser facilmente colocado em QUALQUER entrada e continuar a cadeia.
Coloque o código do interpretador na caixa "código" na parte superior, codifique a resposta na entrada e clique em executar e obter uma saída (mais algum lixo extra que sempre é impresso).
A parte operacional do] = [é esta no final da primeira linha:
Sua essa fuga
[
que estragos jogado com o Brainfuck (o restante sendo ignorados, devido à forma como[
e]
são manipulados por Brainfuck) e uma vez eu olhei para o Brainfuck especificação novamente eu percebi o problema e que tudo o que eu tinha a fazer era inserir a]
algum lugar após a primeira linha (como o] = [intérprete não lê novas linhas) e antes do Brainfuck. Eu escolhi a segunda linha.C #
Brainfuck
Runic
Jelly
Gol> <>
JavaScript (Node.js)
Paranthetic
Whitespace
05AB1E
ilegível
Grama
Largura
Alphabeta
Aheui (esotope)
Comentarista
Java (OpenJDK 8)
Pepe
fonte
19. Na verdade , A005843 (2 * n)
Experimente online!
Parte operacional:
,2*1z⌂
(primeira linha)Ao
⌂
finalizar o programa, nenhum código após este efeito e nenhum dos símbolos anteriores a ele resulta em saída ou polui adversamente a memória operacional. A seção existe em um comentário (C #, JS, Java), contém apenas caracteres ignorados (Comentador,] = [, Pepe, Aheui ...), não está na última linha (Jelly) ou em partes não executadas de o código (Gol> <>, Runic, AlphaBeta).C #
Brainfuck
Runic
Jelly
Gol> <>
JavaScript (Node.js)
Espaço em
branco
parantético 05AB1E Largura de grama
ilegível AlphaBeta Aheui (esótopo) Comentador Java (OpenJDK 8) Pepe ] = [(link não possível, consulte o item 18 para obter instruções)
fonte
]=[
não pode ser transformada em um URL.20. Neim , A008592 (10 * n)
Experimente online!
Não faço ideia de como o Neim funciona. Eu sei o que o código aqui acaba fazendo, mas não tenho idéia de como a própria linguagem funciona.
Acontece também que eu estraguei o Brainfuck com # 19. Devido a conflitos de comando entre vários idiomas, alterar a entrada do Actually para
§
e forçá-lo a um int≈
foi a solução ideal.C #
Brainfuck
Runic
Jelly
Gol> <>
JavaScript (Node.js)
Espaço em
branco
parantético 05AB1E Largura de grama
ilegível AlphaBeta Aheui (esótopo) Comentador Java (OpenJDK 8) Pepe ] = [(link não possível, consulte o item 18 ) Na verdade
fonte
21. Flobnar , A010709 (Todos os 4)
Experimente online!
Flobnar começa
@
e expande para fora a avaliação de itens conforme as regras determinam (@
avalia o que estiver à esquerda,4
avalia4
,+
avalia o que estiver à esquerda somado ao que estiver à direita, etc.). Como a colocação do@
único entra em contato com Runic, um simples!
impede a alteração da pilha de Runic.Dado que a métrica de entrada de Flobnar é "um byte" e entra em um loop infinito se não houver bytes para ler, decidi não me preocupar com nada mais complexo.
Línguas anteriores
C #
Brainfuck
Runic
Jelly
Gol> <>
JavaScript (Node.js)
Paranthetic
Whitespace
05AB1E
ilegível
Grama
Largura
Alphabeta
Aheui (esotope)
Comentarista
Java (OpenJDK 8)
Pepe ] = [(ligação não for possível, veja # 18 )
Na verdade
Neim
fonte
4@
funcionou com facilidade o suficiente para eu apenas ir com isso.