Dans cette variante quine, votre programme doit sortir son code source transposé sur la diagonale du coin supérieur gauche au coin inférieur droit. Par exemple:
votre programme sur quatre lignes
les sorties
yof
ono
u u
r r
p l
r i
o n
g e
r s
a
m
L'espace dans la sortie n'est pas arbitraire. Les espaces apparaissent dans deux situations: où il y a un espace dans l'original (par exemple entre r
et l
dans la quatrième colonne) et où il est nécessaire de remplir les caractères (par exemple tous les espaces dans la première colonne.) Les deux sont obligatoires et les espaces ne peuvent apparaître nulle part sinon dans la sortie.
Une seule nouvelle ligne de fin dans la sortie peut éventuellement être ignorée. Les sauts de ligne dans le code source n'ont aucun effet sur la sortie et les retours à la ligne de début dans le code source doivent être traités comme dans l'exemple ci-dessus. Supposons que chaque caractère qui n'est pas un saut de ligne ait une colonne de large et une ligne de haut, même si pour des caractères comme tabulation, cela peut conduire à une sortie moche.
Votre solution doit avoir au moins deux lignes avec au moins deux caractères non-retour à la ligne chacun, et ne doit pas être sa propre transposition (la sortie ne peut pas être identique à la source.)
Les tricheries quines qui lisent à partir du fichier qui contient leur code source, extraient des données d'une URL, utilisent des fonctions intégrées de quining, etc. ne sont pas autorisées.
C'est le code golf: le code le plus court en octets gagne.
Réponses:
CJam, 14 octets
Testez-le ici.
Bien que plus courte, probablement un peu moins intéressante que la solution de Fission.
Explication
la source
Fission , 17 octets
Toujours ma langue préférée pour les quines ...
Essayez-le en ligne!
Explication
Ceci est assez similaire au quine de base de la fission . En fait, sans la règle "doit avoir au moins deux lignes avec au moins deux caractères non-retour", j'aurais simplement pu transposer cela et remplacer
R
parD
. Cette règle rend les choses un peu plus intéressantes, car nous devons imprimer une autre ligne.Le flux de contrôle commence au
D
avec un seul atome vers le sud. Puisqu'il frappe le,"
il s'enroulera et s'imprimeraà STDOUT, similaire à ce qu'il serait dans le quine normal.
'!
définit ensuite la masse de l'atome sur le code de caractère de!
. Le0
est un téléporteur qui transporte l'atome vers la deuxième colonne, où il se déplace toujours vers le sud.Avec
+
nous incrémentons la masse de l'atome à la valeur de"
.!N!
les tirages devis, saut de ligne, devis. STDOUT ressemble maintenant à ceci:Après s'être enroulé, l'atome en frappe un autre
"
et affiche maintenant la deuxième ligne textuellement:Nous avons fini maintenant. L'atome utilise à nouveau le téléporteur et atterrit dans le
;
qui le détruit et termine ainsi le programme.Je suppose que le plus net ici est d'en mettre un
"
en bas et l'autre en haut pour que je puisse les imprimer en une seule fois sans avoir à définir la valeur de!
nouveau (car il serait écrasé en entrant à nouveau en mode chaîne).la source
Javascript ES6, 90 octets
Pas mal pas mal.
Explication
Voici le cadre standard de quine:
Pour modifier, je viens de diviser la chaîne de quine le long de nouvelles lignes et de caractères pour créer une matrice de caractères, transposée à l'aide de 2 fonctions de carte et jointe pour créer la sortie.
la source
Stax , 23 octets
Essayez-le en ligne!
Adaptation de la
"34bL"34bL
quine, qui est basée sur une idée utilisée dans les quines dans de nombreuses langues.la source
Befunge-93 , 57 octets
Cela fonctionne en plaçant chaque caractère dans la première colonne de la pile (sauf la citation elle-même), puis en imprimant chaque élément hors de la pile. Après cela, il imprime le devis, imprime une nouvelle ligne, puis passe à la deuxième colonne. Il fait la même chose sans imprimer une nouvelle ligne.
Vous pouvez le tester dans le lien dans le titre, mais vous devrez copier-coller le code vous-même dans la fenêtre. Si vous appuyez sur le bouton «lent», il vous montrera le chemin emprunté par le pointeur et la pile à ce moment-là.
la source
"
seule fois, afin que vous puissiez déplacer du code de la première colonne à la seconde.Python 2,
917569 octetsEssayez-le en ligne
Explication:
Cela utilise une modification du quine standard:
Après modification:
Ce serait suffisant si une seule ligne était autorisée. Ensuite, j'ai ajouté deux caractères à la 2e ligne pour répondre à cette exigence. Les
#
caractères de la deuxième ligne peuvent être remplacés par n'importe quoi, tant que vous les modifiez également dans la première ligne et que le programme est syntaxiquement valide.Pour l'imprimer correctement maintenant, je dois imprimer
#
à la fin des deux premières lignes. Je retire donc les deux premiers caractères de la chaînes
et#
j'imprime ceux avec avant l'impressions%s
. J'ai mis l'un des#
au début des
pour enregistrer quelques octets en supprimant un littéral de nouvelle ligne.la source