Viaje de volta em Quine

12

O desafio aqui é simples, e nem um pouco sobre contagem de bytes. Seu trabalho é produzir os 50 primeiros caracteres do código fonte do quine anterior, concatenados com os 50 primeiros caracteres, começando pelos 50 caracteres que coloquei abaixo:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY

Então, vamos dar um exemplo aqui, se você responder em 05AB1E, uma solução para simplesmente gerar os primeiros 50 bytes seria:

ži50£

O que significa que você precisará gerar:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYži50£

Se o seu programa for mais curto, basta usar os primeiros x < 50caracteres. Se o seu programa for mais longo, concatene apenas os 50 primeiros caracteres, terminando no 50º. A próxima pessoa terá que produzir os 50 primeiros caracteres da sua concatenada com seu próprio código.

Seu código pode ter qualquer tamanho, mas você só deve gerar os 50 primeiros caracteres do seu código concatenados no final dos primeiros 50 bytes do código da resposta anterior.


Restrições:

Isso usa a definição de um quine adequado e, além disso, o seguinte:

  • Os comentários são proibidos, inteiramente.
  • PRESTE ATENÇÃO A ESTA SEÇÃO, PODE EVOLVER SE HOUVER LOOPHOLES ABUSIVOS

Como postar uma resposta em cadeia:

  1. Poste um espaço reservado:
    • Mencione seu número de resposta e o idioma que você usará.
  2. Classifique por data, se você perceber que outra pessoa postou um espaço reservado 1 milissegundo antes de você:
    • Exclua o seu, aguarde a próxima oportunidade, desculpe.
  3. Se você garantiu o próximo lugar, responda dentro de 6 horas :
    • Se você não puder responder, remova seu espaço reservado.
  4. SE o espaço estiver sobrecarregado por mais de 6 horas.
    • Vote para excluir o espaço reservado, eu cuido disso.

Seu formato de postagem:

#[Answer #]:[Character Count] Characters, [Language Used]

{TIO MARKDOWN}

{LINE_SEPARATOR="---"}

{ADDITIONAL EXPLANATION OR INFORMATION}

Algumas notas específicas (Importante para Facilidade de Concorrência):

  • Se a pessoa anterior a você incluiu novas linhas ou caracteres não ASCII em sua origem, você poderá STRIP. Isso significa que x="a\nb"se torna ab, onde x[0]=a;x[1]=b;.
    • Você deve declarar a mutação aplicada à fonte anterior.
  • Todos os caracteres são contados como um único caractere, apesar das páginas de código ou codificação de idioma. Por favor, não use contagem de bytes, use contagem de caracteres.

A resposta aceita será a 50thresposta apenas porque; Quero dizer, é SE afinal.

Urna de polvo mágico
fonte
Por que os comentários são banidos? Além disso, em vez de redefinir bytes para caracteres, por que não usar apenas caracteres?
CalculatorFeline
@CalculatorFeline Eu acho que você poderia fazer algumas brechas esfarrapadas e desinteressantes usando comentários, mas isso é só comigo. Reserve o primeiro lugar e prove que estou errado com um comentário e eu suspenderei a proibição.
Magic Octopus Urn
5
O meta post que define quines adequados não contém menção de não ter código extinto.
Ørjan Johansen
1
Como você está definindo um comentário? Comentário não é um termo muito bem definido.
Post Rock Garf Hunter
1
Você também parece trocar os termos caractere e byte, o que é um pouco confuso. Não tenho muita certeza se são os primeiros 50 caracteres ou bytes.
Post Rock Garf Hunter

Respostas:

7

1: 96 Personagens, Haskell

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY:z=['`'..'z']++'A':['C'..'Y']
main=putStr$z++z

Experimente online!


Eu estava me sentindo bobo e não vi nada proibindo a primeira entrada, começando exatamente com os mesmos 50 caracteres da string inicial.

  • ['`'..'z']++'A':['C'..'Y']é uma expressão avaliada para a sequência desses caracteres, com um `prefixo.
  • O resultado corresponde ao padrão, tornando a variável abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYigual a '`'e zigual aos 50 caracteres.
  • main=putStr$z+z então faz a saída real.
Ørjan Johansen
fonte
Eu amo como esse desafio começou com o a-zA-Z e agora basicamente não é mais o alfabeto. Boa chamada no 1º programa.
Urna de polvo mágico
5

5:76 caracteres, Emojicode

🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzACD🔤😀🍪a🔤🏁🍇🍦a❌🔤🔤🔪a 0 45🍪🍉

Experimente online!


Explicação:

🏁🍇		👴 start
  🍦 a 🔤...🔤	👴 define variable a as that string
  😀    	👴 print:
    🍪		👴 combine those strings:
      a		👴 a, and:
      🔤🏁🍇🍦a❌🔤🔤	👴 string literal. the ❌🔤 works like \"
      🔪a 0 45	👴 between indexes 0 and 45 of a
    🍪
🍉		👴 end
betseg
fonte
1
O alfabeto está desaparecendo lentamente: O.
Magic Octopus Urn
Dica de formatação: use <pre><code>e </code></pre>, em seguida, você pode usar &#9;para guias, alinhadas conforme o esperado, mesmo com caracteres de largura variável, como emoji. BTW, eu estava pensando em como fazer uma Quine em Emojicode e então eu rolada para baixo ...
NieDzejkob
@NieDzejkob boa ideia, obrigado.
betseg
@ betseg está um pouco fora em alguns lugares para mim, mas é mais legível de qualquer maneira. Que bom que você gostou
NieDzejkob
@NieDzejkob some? com minha fonte, apenas o comando literal da string está desativado, porque é longo, onde mais você está?
betseg
4

2: 119 Caracteres, Javascript

alert(eval(c="'abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY'+`alert(eval(c=${JSON.stringify(c).substr(0,37)}`"))

Experimente Online (usa em console.logvez de alertproduzir)

Com base nesta JS JS.

Versão antiga (lê o código fonte):

f=_=>`abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYf=${(f+"").substr(0,48)}`;alert(f())

Com base nesta coluna JS

SuperStormer
fonte
Esta não é uma solução adequada, pois a função se refere a si mesma.
Shaggy
@Shaggy eu adicionei um válido
SuperStormer
1
As funções autorreferenciais do @Shaggy são válidas por nossa definição.
ATaco 30/07
3

8: 70 caracteres, Stax

"v->{String t=`"⛽as=:'\`"alert(eval(c=\`"''abcdefghijk"c'".`"R34|S50(+

Executar e depurar online

Explicação

"..."c'".`"R34|S50(+
"..."                   The string from last output
     c'".`"R            Escape all double quotes
            34|S        Surround with double quotes
                50(     Take the first 50 characters
                   +    Append to the string from last output
                        Implicit output
Weijun Zhou
fonte
2

3:56 Personagens, SOGL

"alert(eval(c="'abcdefghijklmnopqrstuvwxyzACDEFGHIJ”1#Οj

Experimente aqui!

Explicação:

"...”      push the first 50 bytes of the previous answer
     1#Ο   wrap a quote around with that
        j  take the last letter off, as my answer has one more byte for the starting quote.

A resposta Javascript tinha uma citação, então eu tive que adicionar uma citação inicial, mas como isso não é código-golfe, isso não importa.

dzaima
fonte
2

4:81 caracteres, J

s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzACDEFGHI'
echo s,50{.'s=:',quote s

Experimente online!


Conor O'Brien
fonte
2

7: 137 caracteres, Java 8

v->{String t="⛽as=:'\"alert(eval(c=\"''abcdefghijklmnopqrstuvwxyzA";return t+("v->{String t=\""+t.replace("\"","\\\"")).substring(0,50);}

Experimente online.

Explicação:

v->{        // Method with empty unused parameter and String return-type
  String t="⛽as=:'\"alert(eval(c=\"''abcdefghijklmnopqrstuvwxyzA";
            //  String containing the first 50 characters of the previous answer
  return t  //  Return those first 50 characters
   +"v->{String t=\""+t.replace("\"","\\\"")).substring(0,50);}
            //  Concatted with the first 50 characters of my answer
            //  with correct escape-slashes
Kevin Cruijssen
fonte
Aha! Achei que Emoji matou esse desafio para sempre. Agradável.
Urna Mágica de Polvo
@MagicOctopusUrn Agora só observei sua regra sobre " Se a pessoa anterior a você incluiu novas linhas ou caracteres não ASCII em sua origem, você pode STRIP-los. ", Para que uma resposta possa se livrar dos Emojis, se assim o desejarem. Para minha resposta, não importa de qualquer maneira, uma vez que estamos contando caracteres em vez de bytes.
Kevin Cruijssen
Isso e não se trata da quantidade de personagens honestamente, e sim, eu esqueci essa regra (além disso, esqueci o desafio em geral).
Magic Octopus Urn
Honestamente, pense bem, isso realmente não é um desafio para todos, é?
Urna de polvo mágico
@MagicOctopusUrn It kinda is. Você basicamente recebe os primeiros 50 caracteres de sua quine. Em Java, os quines geralmente são formados colocando o código-fonte não formatado em uma String e, em seguida, formate / escape corretamente as aspas duplas e as barras. Porém, apenas a função lambda quine básica no Java 8 já possui 88 bytes ( Experimente on-line ); portanto, em Java, esse desafio é muito mais curto sem o uso de uma quine completa. Mas posso imaginar que o quine é a melhor abordagem na maioria dos idiomas.
Kevin Cruijssen 19/03/19
1

6: 70 caracteres, Emoji

⛽as=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzAC🚘👥💬⛽💬🔀👫💬0💬📥💬-1💬📥✂👫➡

Experimente online!

Parece que é impossível fazer com que ela não produza a nova linha à direita. Se não estiver certo, removerei a resposta.

Explicação:

⛽ ... 🚘	String literal
👥		Duplicate
💬⛽💬		Push ⛽ as a string
🔀		Swap the top two strings. Stack: [long literal] "⛽" [long literal]
👫		Concatenate.
💬0💬📥💬-1💬📥✂	Remove the last character
👫		Concatenate.
➡		Print.
NieDzejkob
fonte
Não deveria ser ⛽🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwx🚘👥💬⛽💬🔀👫💬0💬📥💬-1💬📥✂👫➡? betseg resposta Emojicode 's não começa com as=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzACmas com 🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxem vez.
Kevin Cruijssen 19/03/19
@KevinCruijssenIf the person before you has included newlines or non-ASCII characters in their source, you may STRIP them.
NieDzejkob
Ah, eu perdi essa regra. Nesse caso, atualizarei minha resposta.
Kevin Cruijssen
Por curiosidade, por que você os tirou? Para facilitar as respostas futuras? Como seu código funciona perfeitamente sem remover os Emojis da resposta anterior: Experimente aqui .
21818 Kevin Cruijssen
@KevinCruijssen Foi há meio ano. Não me lembro.
NieDzejkob 19/0318
1

12: 202 caracteres, Ruby

puts "21ipdgmtwkkke7ynvzpcnlzt7kl".to_i(36).to_s(7).gsub('0','>').gsub('1','+').gsub('2','-').gsub('3','<').gsub('4','[').gsub('5','.').gsub('6',']')+'puts "21ipdgmtwkkke7ynvzpcnlzt7kl".to_i(36).to_s(7'

Experimente online!


Codifica os primeiros cinquenta caracteres da resposta anterior na base sete

  • 0:>
  • 1: +
  • 2: -
  • 3: <
  • 4: [
  • 5:.
  • 6:]

Em seguida, converte-o na base 36 para obter "21ipdgmtwkkke7ynvzpcnlzt7kl"

Alex Allen
fonte
0

9: 55 caracteres, geléia

“"v->{String t=`"as=:'\`"alert(eval(c=\`"''abcdefg”;”“;

Experimente online!


Eu removi o caractere não ASCII da saída, pois isso é permitido e o Jelly o estava ignorando.

Explicação

Isso começa com a string literal dos primeiros 50 caracteres (menos ) da resposta anterior e, em seguida, acrescenta o caractere a ele e, em ;”“seguida, acrescenta a string original ao final novamente com o final ;. Como um caractere foi removido, os primeiros 50 caracteres do meu código-fonte são os 49 da resposta anterior com um à frente, o que permite que este programa seja tão curto. (Sim, eu sei que isso não é mas por que não jogar golfe se você pode?)

dylnan
fonte
0

10: 116 caracteres, Python 3

print('''“"v->{String t=`"as=:'\`"alert(eval(c=\`"''abcdefgprint(\'\'\'“"v->{String t=`"as=:'\`"alert(eval(c=\`"''')

Simplesmente imprime uma sequência que consiste nos 50 primeiros caracteres da resposta 9, seguidos pelos 50 primeiros caracteres de sua própria origem. Não é necessária nenhuma inteligência semelhante a um quine, pois as aspas escapadas ( \'\'\') aparecem após o 50º caractere e, portanto, não precisam ser reproduzidas na saída.

Esse método funcionará em praticamente qualquer idioma - você apenas precisará escapar de qualquer caractere de citação que apareça na resposta anterior. Consequentemente, não acho que haja muito desafio nesse desafio.

Nathaniel
fonte
0

11: 723 caracteres, Brainf ***

+[------->++<]>++.++.---------.+++++.++++++.+[--->+<]>+.-...-----.[----->++<]>++.--[++>---<]>-.---[-->+++<]>-.[->++<]>-.[--->++<]>+.[--->+<]>+++.--.---------.+++++.-------.-[--->+<]>--.---[->++++<]>.[-->+<]>+++.+++[-->+++<]>.[->+++<]>++.+[--->+<]>.--[--->+<]>--.+[-->+<]>+++.---.-[--->++<]>+.+[------>+<]>.++++.[->+++<]>++.+[--->+<]>.+++++++++++.-------.+++++++++++++.++.+[--->+<]>+.+[--->+<]>++.[--->+<]>-.[->+++<]>-.+++++++++++.[--->+<]>++++.+[--->+<]>.[--->++<]>-----.+[-->+++<]>-.++++.[->+++<]>++.[[-]<]++[------>+<]>.++[->++<]>+.-[-->+<]>.......---[-->+++<]>-.+[--->++<]>+..+[----->+<]>.++[-->+++<]>.[--->++<]>.+[--->++<]>+..+++.---..+++.-.........+.---.....+++.---......+++.---.++[->++<]>+.-[-->+<]>...---[-->+++<]>-.

Caractere não imprimível removido . Quase completamente gerado pelo Brainfuck Text Generator . Pode muito bem ser preguiçoso, certo?

TIO

Print [print('''"v->{String t=`"as=:'\`"alert(eval(c=\`"] +[------->++<]>++.++.---------.+++++.++++++.+[--->+<]>+.-...-----------.++++++.[----->++<]>++.--[++>---<]>-.---[-->+++<]>-.[->++<]>-.[--->++<]>+.[--->+<]>+++.--.---------.+++++.-------.-[--->+<]>--.---[->++++<]>.[-->+<]>+++.+++[-->+++<]>.[->+++<]>++.+[--->+<]>.--[--->+<]>--.+[-->+<]>+++.---.-[--->++<]>+.+[------>+<]>.++++.[->+++<]>++.+[--->+<]>.+++++++++++.-------.+++++++++++++.++.+[--->+<]>+.+[--->+<]>++.[--->+<]>-.[->+++<]>-.+++++++++++.[--->+<]>++++.+[--->+<]>.[--->++<]>-----.+[-->+++<]>-.++++.[->+++<]>++.
Clear all cells to left until first empty cell [[-]<]
Print [+[------->++<]>++.++.---------.+++++.++++++.+[--->] ++[------>+<]>.++[->++<]>+.-[-->+<]>.......---[-->+++<]>-.+[--->++<]>+..+[----->+<]>.++[-->+++<]>.[--->++<]>.+[--->++<]>+..+++.---..+++.-.........+.---.....+++.---......+++.---.++[->++<]>+.-[-->+<]>...---[-->+++<]>-.
Panda0nEarth
fonte
Parece que você imprime os caracteres de 2 a 51 da sua resposta Brainfuck em vez dos 50 primeiros (está faltando o primeiro >): Experimente on-line. Além disso, você pode soltar o caractere, já que sua resposta do Brainfuck está exibindo-o como imprimível ``.
21818 Kevin Crijssen
O >começo parece ter sido uma adição acidental, e eu larguei o personagem. Com base em outras respostas, acho que isso significa que só preciso imprimir os primeiros 49 caracteres.
Panda0nEarth