Retour à Quine

12

Le défi ici est simple et ne concerne pas du tout le nombre d'octets. Votre travail consiste à générer les 50 premiers caractères du code source de la quine précédente, concaténés avec les 50 premiers caractères de la vôtre en commençant par les 50 caractères que j'ai placés ci-dessous:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY

Alors, prenons un exemple ici, si vous deviez répondre en 05AB1E, une solution pour simplement sortir les 50 premiers octets serait:

ži50£

Cela signifierait que vous auriez besoin de produire:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYži50£

Si votre programme est plus court, utilisez simplement les premiers x < 50caractères. Si votre programme est plus long, ne concaténez que les 50 premiers caractères, en terminant par le 50e caractère. La personne suivante devra alors sortir les 50 premiers caractères de votre quine concaténés avec leur propre code.

Votre code peut être de n'importe quelle taille, mais vous ne devez sortir que les 50 premiers caractères de votre code concaténés à la fin des 50 premiers octets du code de la réponse précédente.


Restrictions:

Cela utilise la définition d'un quine approprié et, en plus de cela, les choses suivantes:

  • Les commentaires sont totalement interdits.
  • FAITES ATTENTION À CETTE SECTION, ELLE PEUT ÉVOLUER SI DES BOUCLES ABUSIVES SE PRODUISENT

Comment publier une réponse chaînée:

  1. Poster un espace réservé:
    • Mentionnez votre numéro de réponse et la langue que vous utiliserez.
  2. Tri par date, si vous remarquez que quelqu'un d'autre a affiché un espace réservé 1 milliseconde avant vous:
    • Supprimez le vôtre, attendez la prochaine opportunité, désolé.
  3. Si vous avez obtenu la prochaine place, VEUILLEZ RÉPONDRE DANS LES 6 HEURES :
    • Si vous ne pouvez pas répondre, supprimez votre espace réservé.
  4. SI l'espace a été accaparé pendant plus de 6 heures.
    • Votez pour supprimer l'espace réservé, je m'en occupe.

Votre format de message:

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

{TIO MARKDOWN}

{LINE_SEPARATOR="---"}

{ADDITIONAL EXPLANATION OR INFORMATION}

Quelques notes spécifiques (Important pour la facilité de concurrence):

  • Si la personne qui vous précède a inclus des sauts de ligne ou des caractères non ASCII dans sa source, vous pouvez les DÉCAPER. Cela signifie que x="a\nb"devient ab, où x[0]=a;x[1]=b;.
    • Vous devez indiquer la mutation que vous avez appliquée à la source précédente.
  • Tous les caractères sont comptés comme un seul caractère, malgré les pages de codes ou l'encodage de la langue. Veuillez ne pas utiliser le nombre d'octets, utilisez le nombre de caractères.

La réponse acceptée sera la 50thréponse, juste parce que; Je veux dire, c'est SE après tout.

Urne de poulpe magique
la source
Pourquoi les commentaires sont-ils interdits? De plus, au lieu de redéfinir les octets en caractères, pourquoi ne pas simplement utiliser des caractères?
CalculatorFeline
@CalculatorFeline Je pense que vous pourriez faire des failles assez boiteuses et sans intérêt en utilisant des commentaires, mais c'est juste moi. Réservez la première place et me prouver le contraire avec un commentaire et je lèverai l'interdiction.
Magic Octopus Urn
5
Le méta post lié définissant les quines appropriés ne contient aucune mention de ne pas avoir de code défunt.
Ørjan Johansen
1
Comment définissez-vous le commentaire? Le commentaire n'est pas un terme très bien défini.
Ad Hoc Garf Hunter
1
Vous semblez également échanger les termes caractère et octet, ce qui est un peu déroutant. Je ne sais pas vraiment si ce sont les 50 premiers caractères ou octets.
Ad Hoc Garf Hunter

Réponses:

7

1: 96 caractères, Haskell

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

Essayez-le en ligne!


Je me sentais stupide et je n'ai rien vu interdisant la première entrée commençant avec exactement les mêmes 50 caractères que la chaîne initiale.

  • ['`'..'z']++'A':['C'..'Y']est une expression évaluant la chaîne de ces caractères, avec un `préfixe.
  • Le résultat est une correspondance de modèle, ce qui rend la variable abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYégale '`'et zégale aux 50 caractères.
  • main=putStr$z+z fait alors la sortie réelle.
Ørjan Johansen
la source
J'adore comment ce défi a commencé avec l'a-zA-Z et maintenant ce n'est plus l'alphabet. Bon appel sur le 1er programme.
Urne Magic Octopus
5

5:76 caractères, Emojicode

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

Essayez-le en ligne!


Explication:

🏁🍇		👴 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
la source
1
L'alphabet disparaît lentement: O.
Magic Octopus Urn
Conseil de mise en forme: utilisez <pre><code>et </code></pre>, vous pouvez ensuite utiliser &#9;pour les onglets, qui s'alignent comme prévu, même avec des caractères de largeur variable comme les emoji. BTW, je réfléchissais à la façon de faire une quine dans Emojicode puis j'ai fait défiler vers le bas ...
NieDzejkob
@NieDzejkob bonne idée, merci.
betseg
@betseg, il est légèrement désactivé à certains endroits pour moi, mais plus lisible de toute façon. Heureux que cela vous ait plu
NieDzejkob
@NieDzejkob quelques-uns? avec ma police, seule la commande du littéral de chaîne est désactivée car elle est longue, où d'autre de votre côté?
betseg
4

2: 119 caractères, Javascript

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

Essayez-le en ligne (utilise console.logau lieu de alertpour produire)

Basé sur ce quine JS.

Ancienne version (lit le code source):

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

Basé sur ce quine JS

SuperStormer
la source
Ce n'est pas un quine approprié car la fonction se référence elle-même.
Shaggy
@Shaggy J'en ai ajouté un valide
SuperStormer
1
@Shaggy Les fonctions autoréférentielles sont valides selon notre définition.
ATaco
3

8:70 caractères, Stax

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

Exécuter et déboguer en ligne

Explication

"..."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
la source
2

3:56 Personnages, SOGL

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

Essayez-le ici!

Explication:

"...”      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.

La réponse Javascript contenait une citation, j'ai donc dû ajouter une citation de départ, mais comme ce n'est pas du code-golf, cela n'a pas d'importance.

dzaima
la source
2

4:81 caractères, J

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

Essayez-le en ligne!


Conor O'Brien
la source
2

7:137 caractères, Java 8

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

Essayez-le en ligne.

Explication:

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
la source
Ah! Je pensais qu'Emoji avait définitivement tué ce défi. Joli.
Urne de poulpe magique le
@MagicOctopusUrn Je remarque seulement maintenant votre règle sur " Si la personne avant vous a inclus des sauts de ligne ou des caractères non-ASCII dans sa source, vous pouvez les dépouiller. ", Donc une réponse pourrait se débarrasser des Emojis si elle le souhaite. Pour ma réponse, cela n'a aucune importance, car nous comptons de toute façon en caractères plutôt qu'en octets.
Kevin Cruijssen
Cela et ce n'est pas sur la quantité de caractères honnêtement, et oui j'ai oublié cette règle (en plus j'ai oublié le défi en général).
Urne Magic Octopus
Honnêtement, à bien y penser, ce n'est vraiment pas du tout un défi quine n'est-ce pas?
Urne Magic Octopus
@MagicOctopusUrn C'est un peu le cas. Vous obtenez essentiellement les 50 premiers caractères de votre quine. En Java, les quines sont généralement formées en plaçant le code source non formaté dans une chaîne, puis formatent / échappent correctement les guillemets doubles et les barres obliques. Cependant, la fonction lambda de base de Java 8 est déjà de 88 octets ( essayez-la en ligne ), donc en Java, ce défi est beaucoup plus court sans utiliser de quine complet. Je peux cependant imaginer que quine est la meilleure approche dans la plupart des langues.
Kevin Cruijssen
1

6:70 caractères, Emoji

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

Essayez-le en ligne!

Il semble impossible de ne pas faire sortir la nouvelle ligne de fin. Si ce n'est pas OK, je supprimerai la réponse.

Explication:

⛽ ... 🚘	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
la source
Ne devrait-il pas en être ainsi ⛽🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwx🚘👥💬⛽💬🔀👫💬0💬📥💬-1💬📥✂👫➡? betseg Emojicode réponse de ne pas commencer as=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzACmais à la 🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxplace.
Kevin Cruijssen
@KevinCruijssenIf the person before you has included newlines or non-ASCII characters in their source, you may STRIP them.
NieDzejkob
Ah, j'ai raté cette règle .. Dans ce cas, je mettrai à jour ma réponse.
Kevin Cruijssen
Par curiosité, pourquoi les avez-vous déshabillés? Pour faciliter les réponses futures? Parce que votre code fonctionne parfaitement sans supprimer les Emojis de la réponse précédente: Essayez-le ici .
Kevin Cruijssen
@KevinCruijssen C'était il y a six mois. Je ne m'en souviens pas.
NieDzejkob
1

12: 202 caractères, 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'

Essayez-le en ligne!


Encode les cinquante premiers caractères de la réponse précédente en base sept

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

Le convertit ensuite en base 36 pour obtenir "21ipdgmtwkkke7ynvzpcnlzt7kl"

Alex Allen
la source
0

9:55 personnages, Jelly

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

Essayez-le en ligne!


J'ai supprimé le caractère non ASCII de la sortie car cela est autorisé et Jelly l'ignorait.

Explication

Cela commence par le littéral de chaîne des 50 premiers caractères (moins ) de la réponse précédente, puis lui ajoute le caractère avec ;”“puis ajoute à nouveau le littéral de chaîne d'origine à la fin avec la finale ;. Puisqu'un caractère a été supprimé, les 50 premiers caractères de mon code source sont les 49 de la réponse précédente avec un devant qui permet à ce programme d'être si court. (Oui, je me rends compte que ce n'est pas mais pourquoi ne pas le jouer si vous le pouvez?)

dylnan
la source
0

10: 116 Caractères, Python 3

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

Imprime simplement une chaîne composée des 50 premiers caractères de la réponse 9, suivie des 50 premiers caractères de sa propre source. Aucune intelligence de type quine n'est nécessaire, car les guillemets échappés ( \'\'\') apparaissent après le 50ème caractère et n'ont donc pas besoin d'être reproduits dans la sortie.

Cette méthode fonctionnera dans pratiquement toutes les langues - il vous suffira d'échapper les caractères de citation qui apparaissent dans la réponse précédente. En conséquence, je ne pense pas qu'il y ait beaucoup de défi dans ce défi.

Nathaniel
la source
0

11: 723 Personnages, Brainf ***

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

Caractère non imprimable dépouillé . Presque complètement généré par Brainfuck Text Generator . Autant être paresseux, non?

TIO

Print [print('''"v->{String t=`"as=:'\`"alert(eval(c=\`"] +[------->++<]>++.++.---------.+++++.++++++.+[--->+<]>+.-...-----------.++++++.[----->++<]>++.--[++>---<]>-.---[-->+++<]>-.[->++<]>-.[--->++<]>+.[--->+<]>+++.--.---------.+++++.-------.-[--->+<]>--.---[->++++<]>.[-->+<]>+++.+++[-->+++<]>.[->+++<]>++.+[--->+<]>.--[--->+<]>--.+[-->+<]>+++.---.-[--->++<]>+.+[------>+<]>.++++.[->+++<]>++.+[--->+<]>.+++++++++++.-------.+++++++++++++.++.+[--->+<]>+.+[--->+<]>++.[--->+<]>-.[->+++<]>-.+++++++++++.[--->+<]>++++.+[--->+<]>.[--->++<]>-----.+[-->+++<]>-.++++.[->+++<]>++.
Clear all cells to left until first empty cell [[-]<]
Print [+[------->++<]>++.++.---------.+++++.++++++.+[--->] ++[------>+<]>.++[->++<]>+.-[-->+<]>.......---[-->+++<]>-.+[--->++<]>+..+[----->+<]>.++[-->+++<]>.[--->++<]>.+[--->++<]>+..+++.---..+++.-.........+.---.....+++.---......+++.---.++[->++<]>+.-[-->+<]>...---[-->+++<]>-.
Panda0nEarth
la source
Vous semblez imprimer les 2e à 51e caractères de votre réponse Brainfuck au lieu des 50 premiers (il manque la première >): Essayez-le en ligne. De plus, vous voudrez peut-être supprimer le caractère, car votre réponse Brainfuck le produit actuellement comme non imprimable ''.
Kevin Cruijssen
Le >début semble avoir été un ajout accidentel, et j'ai laissé tomber le personnage. Sur la base d'autres réponses, je pense que cela signifie que je n'ai besoin que d'imprimer les 49 premiers caractères.
Panda0nEarth