Une métaquine est un programme qui n'est pas une quine, mais dont la sortie, lorsqu'elle est exécutée en tant que programme dans la même langue, est une quine.
Le but de ce défi est d'écrire une métaquine. C'est le code-golf , donc le code le plus court gagne, avec la première réponse utilisée comme bris d'égalité. Notez que seuls les programmes complets sont acceptables, en raison de la définition d'une quine.
Règles pour les quines
Seuls les vrais quines sont acceptés. Autrement dit, vous devez imprimer l'intégralité du code source textuellement dans STDOUT, sans :
- lire votre code source, directement ou indirectement.
- en s'appuyant sur un environnement REPL qui évalue et imprime simplement chaque expression que vous lui donnez.
- en s'appuyant sur des fonctionnalités linguistiques qui ne font qu'imprimer la source dans certains cas.
- en utilisant des messages d'erreur ou STDERR pour écrire tout ou partie du quine. (Vous pouvez écrire des choses dans STDERR ou produire des avertissements / erreurs non fatales tant que STDOUT est un quine valide et que les messages d'erreur n'en font pas partie.)
- le code source composé uniquement de littéraux (qu'il s'agisse de littéraux de chaîne, de littéraux numériques, etc.) et / ou de NOP.
Toute sortie non supprimable (comme les avis de droits d'auteur, les messages de démarrage / arrêt ou un saut de ligne de fin) peut être ignorée dans la sortie pour des raisons de validité du quine.
Exemple
Ignorer la règle qui interdit les programmes uniquement littéraux et le quining intégré, ce serait une métaquine dans Sérieusement:
"Q"
Le programme se compose du littéral de chaîne unique "Q"
, qui est implicitement imprimé en sortie. Lorsque la sortie ( Q
) est exécutée, il s'agit d'une quine ( Q
c'est la fonction de quine intégrée).
T
est une réponse Pyth simple à 1 octet.Réponses:
CJam, 6 octets
Impressions
qui est la quine appropriée la plus courte dans CJam.
Testez-le ici.
Explication
Les deux programmes fonctionnent exactement de la même manière, car le saut de ligne à l'intérieur du quine approprié est un no-op et n'est inclus que parce qu'il est plus coûteux de le supprimer de la sortie. Fonctionnement des programmes:
Note latérale
La même chose fonctionne dans GolfScript que
qui imprime
avec un saut de ligne arrière, qui est à son tour l'un des quines connus les plus courts.
la source
Pyth,
1211109 octetsSupprimé un octet de plus grâce à @ Pietu1998.
Ceci imprime
qui est une quine en Pyth. Vous pouvez l'essayer ici .
la source
jN B".[9N
ou.[9N"jN B
. (jN B"jN B
est un autre vrai quine à 9: fonction d'identité bifurquée et rejoindre par"
.)Fission , 6 octets
Impressions
Quel est le quine de fission le plus court . Cela fonctionne parce que les changements cycliques du programme ne modifient pas sa sortie.
Essayez-le en ligne!
la source
Javascript ES6, 21 octets
Banal.
la source
Python 2, 29 octets
Il s'avère que le quine court en python bien connu est facilement transformé en métaquine :)
Et, puisque nous n'avons pas à nous soucier de faire correspondre la nouvelle ligne de fin, la métaquine est en fait plus courte!
la source
Japt,
1513 octetsTestez-le en ligne!
Ce programme produit
qui est le quine le plus court connu de Japt.
Comment ça fonctionne
Version non concurrente, 11 octets
Je viens d'ajouter
é
une commande "rotation". Doncest maintenant un quine valide.
la source
Rubis,
2523Génère la quine classique Ruby HEREdoc
Ancienne solution
Se génère lui-même sauf avec les guillemets simples remplacés par des guillemets doubles.
la source
JavaScript, 50 octets
Basé sur le quine JS sans lecture de source le plus court connu de l'homme , mais 8 octets plus court. Impressions
ce qui est une quine.
la source
Poisson (> <>), 17 octets
Cela fonctionne en utilisant la quine de poisson classique
"r00g!;oooooooo|
mais ajoute un{
qui décale toute la pile vers la gauche afin que le programme d'origine ne soit pas une quine, mais sa sortie, lorsqu'elle est exécutée, l'est.Les sorties:
qui est une quine de poisson!
la source
Gelée , 3 octets (non concurrent)
Malheureusement, les atomes requis sont environ 2 semaines plus jeunes que le défi.
Métaquine
Essayez-le en ligne!
Comment ça fonctionne
Quine
Essayez-le en ligne!
Comment ça fonctionne
Puisque le second
Ṙ
imprime les deux premiers caractères (”Ṙ
), c'est une quine appropriée par notre définition.la source
Octopen-Baru, 22 octets
** Réponse non concurrente
Sortie Ruby
Quelles sorties
見
. Ce qui est une quine à Octopen-Baru!la source
7 , 2 octets, défi de postdates de langue
Le programme est long de deux octets et peut être interprété de plusieurs manières; sous forme de vidage hexadécimal:
comme page de code 437:
ou, de façon plus lisible, en octal (que 7 utilisent nativement):
Essayez-le en ligne!
Le fonctionnement est très simple: c'est la quine standard 7 avec un élément de pile sans opération inséré entre les deux moitiés, pour le rendre différent (dans ce contexte,
7
sépare les éléments de pile). (J'aurais également pu l'insérer au début723723
. Je n'aurais pas pu l'interpréter à la fin parce que les 7 de fin sont comme des espaces de fin et ignorés dans l'encodage compressé, donc il ne serait pas différent du programme de sortie. )Soit dit en passant, ce programme est un palindrome en hexadécimal, mais c'est surtout une coïncidence.
la source
Sous-charge, 11 octets
Assez simple. Il s'imprime
(:aSS):aSS
, qui est le quine standard de sous-charge.la source
Brachylog , 12 octets
Essayez-le en ligne!
L'une des 132 variations de métaquine de même longueur sur la quine I traduit de la quine Brachylog v1 (sans tricher) de Fatalize. J'ai en fait écrit un programme (non-golfé et globalement idiot) pour les imprimer tous:
Essayez-le en ligne!
Il y a deux parties de la Quine originale qui pourrait être remplacé inconséquente:
;?
peut être changée engj
oujḍ
, et₁
peuvent être modifiés à₃
,₅
ou₇
. Si nous les conservons ou les modifions en dehors du littéral de chaîne d'une manière et à l'intérieur du littéral de chaîne d'une manière différente, la sortie ne correspondra pas à la source, car les variantes présentes dans le littéral de chaîne seront imprimées à l'intérieur et à l'extérieur de celui-ci. , résultant en un quine qui n'était pas le programme initial exécuté.;?
,gj
Etjḍ
sont interchangeables , car les trois paires de la chaîne littérale avec elle - même: en raison de la mise en page du programme, la variable d'entrée?
est unifié avec la chaîne, de sorte que les;?
paires avec la chaîne elle - même; quelle que soit la disposition,gj
encapsule la chaîne dans une liste qui est ensuite concaténée à elle-même;jḍ
concatène également la chaîne à elle-même, puis la divise en deux.Les
w
indices impairs sont interchangeables car, même si à l'originew
ils ne pouvaient prendre que 0 ou 1, avec 0 imprimant l'entrée versw
et 1 imprimant le premier élément formaté avec le second, l'inventaire des indices pourw
est devenu quelque chose qui fonctionne extérieurement comme un champ binaire: le bit inférieur de l'indice code s'il est direct ou formaté, le bit du milieu code si la variable de sortie dew
n'est pas contraint ou défini sur l'entrée, et le bit élevé code si l'impression est effectuée immédiatement ou si elle est retardée jusqu'à la fin du programme afin qu'elle puisse faire l'objet d'un retour arrière. (Ces indices étaient ma première et jusqu'à présent la plus grande contribution à Brachylog.) Étant donné que la quine et la métaquine n'utilisent pas la variable de sortie et ne reviennent pas en arrière, les quatre indices impairs sont équivalents.la source
Befunge-93, 22 octets
Je viens de prendre le quine standard, de le mettre entre guillemets, de l'inverser (afin qu'il soit correctement chargé sur la pile), puis d'ajouter une impression de pile à la fin.
C'est 8 caractères ajoutés au quine normal, il est donc très possible qu'il y ait une meilleure solution.
la source
Turtlèd , 52 octets (non concurrentiel)
1 de moins que le quine d'origine
Fonctionne de la même manière, sauf qu'il n'a pas de caractère à la fin, lors de l'exécution, il aura un caractère à la fin, qui n'affecte pas la sortie, car il écrit # sur un #. Notez que la sortie est légèrement différente de la quine que j'ai faite pour le défi de quine, mais fonctionne de la même manière: "écrit #, qui est son propre dernier caractère, comme la quine que j'ai faite. Consultez l'explication ici .
la source
Lua, 45 octets
Quine code not mine.
aura pour résultat
ce qui est une quine. Heureux que ce
;
soit facultatif à Lua.la source
Pushy , 7 octets
Non compétitif car la langue est postérieure au défi.
C'est le quine standard, mais avec les sauts de ligne supprimés. Les nouvelles lignes ne signifient rien dans Pushy, mais sont le séparateur standard de l'opérateur d'impression, et sont donc nécessaires pour une véritable quine.
Essayez-le en ligne! Cela produit:
Quelle est la quine la plus courte de Pushy - une explication sur comment cela fonctionne peut être trouvée ici .
Alternativement,
H5-34_"
fonctionne pour le même nombre d'octets.la source
Mousse , 14 octets
Ceci imprime la deuxième quine de mousse qui peut être trouvée ici . C'est en fait plus court car il y
.
aura toujours un espace entre chaque élément, mais la barre du troisième jeton me permet d'omettre l'espace avant celui-ci.la source
Husk , 6 octets
Essayez-le en ligne!
Imprime le quine Husk standard
S+s"S+s"
.Le quine a expliqué:
la source