Supposons que vous ayez 2 langues A
et B
. Une chaîne s
est un point-virgule dans A
et B
si elle remplit les conditions suivantes:
s
est une quine dans la langueA
.s
est un polyglotte dansA
etB
.- La sortie de l'exécution en
s
tant queB
programme est une chaîne différentes'
, qui est une quine inB
.
Le but de ce défi est d'écrire une sémiquine en deux langues distinctes. C'est le code-golf , donc le code le plus court gagne, avec la première réponse utilisée comme bris d'égalité.
Règles pour les quines
Seuls les vrais quines sont acceptés. Autrement dit, vous devez imprimer l'intégralité du code source textuellement sur 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 impriment simplement la source dans certains cas.
- utiliser 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.)
De plus, votre code source ne doit pas être 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. Par exemple, `12
est un polyglotte dans Jelly et Pyth, mais dans Jelly, c'est un NOP et un littéral numérique, il n'est donc pas valide.
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.
Règles pour les polyglottes
Les deux langues utilisées doivent être distinctement différentes. En particulier:
- Il ne doit pas s'agir de versions différentes du même langage (par exemple Python 2 vs. Python 3).
- Ils ne doivent pas être des dialectes différents de la même langue (par exemple Pascal vs Delphi).
- Un langage peut ne pas être un sous-ensemble de l'autre (par exemple C contre C ++ 1 ).
- Une langue peut ne pas être un dérivé trivial de l'autre (par exemple, Matlab vs Octave 2 , brainfuck vs boolfuck vs TinyBF vs ShadyAsFuck vs tous les autres dérivés triviaux brainfuck).
Règles diverses
- Vous ne pouvez pas accepter l'entrée de STDIN (ou de toute autre source). Si la langue que vous avez choisie doit accepter l'entrée, alors soit l'entrée doit être vide (chaîne vide, envoyée depuis
/dev/null
, etc.), soit la sortie du programme ne doit pas dépendre de l'entrée. - Pour ce défi, vous devez écrire un programme complet. Exiger du code supplémentaire pour exécuter la solution n'est pas autorisé (comme affecter et appeler une fonction lambda définie dans la solution).
1: Oui, je sais que C n'est pas vraiment un sous-ensemble de C ++. Il est assez proche pour être considéré comme un aux fins des polyglottes, donc je le compte pour ce défi.
2: Comme le point 1 ci-dessus, bien qu'Octave ne soit pas techniquement compatible à 100% avec Matlab, il a été conçu pour être compatible et est suffisamment proche pour que permettre un polyglotte Matlab / Octave banalise le défi.