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.
Réponses:
GolfScript + Fission ,
1918 octetsLe saut de ligne arrière est nécessaire.
C'est une vraie quine dans GolfScript. Essayez-le en ligne!
Dans Fission, il imprime
ce qui est une vraie quine dans la fission . Essayez-le en ligne!
Explication
Dans GolfScript, n'importe quoi de la forme
est une quine tant qu'elle
...
laisse une chaîne avec".~"
sur la pile. Le.
duplique le bloc, de sorte qu'il y a une copie qui est imprimée à la fin, et l'~
exécute, afin que nous puissions utiliser son contenu pour l'imprimer.~
lui - même. Dans ce cas, le bloc pousse la chaînepuis le tronque aux deux premiers caractères avec
2<
.Le programme Fission fonctionne vraiment exactement comme le quine lui - même , car la première et la troisième ligne sont entièrement ignorées par le programme.
la source
Ruby + (JavaScript ou Python 3), 76 octets
Ceci est un autre défi qui peut être résolu en utilisant mon nouveau langage préféré, le sous-ensemble presque commun de Ruby, JavaScript et Python 3; et étant donné que nous n'avons pas encore de réponses dans les langues exotériques, et que beaucoup de gens aiment voir des solutions dans des langues autres que le golf, j'ai pensé en apporter une. Encore mieux, la même réponse résout le défi de différentes manières en même temps.
Voici
s
:Ceci est une quine en Ruby. Ce n'est pas une quine en JavaScript ou Python 3; si vous l'exécutez dans l'une de ces langues, sa sortie
s'
a une nouvelle ligne de fin et est donc différente:Cependant,
s'
est une quine polyglotte en JavaScript et Python 3! (Comme d'habitude pour moi, j'utilise l'implémentation Rhino de JavaScript, à la fois pour plus de commodité (car elle s'exécute à partir de la ligne de commande plutôt que d'avoir besoin d'un navigateur), et parce qu'elle a une bibliothèque standard bizarre dans laquelleprint
écrit sur la sortie standard.) Les deux langues produisents'
suite à l'exécution de l'un ou l'autre programme.En prime, ce programme résout également le problème à l'envers. Si vous décidez de lancer
s'
Ruby, il imprimera às
nouveau le programme d'origine . En tant que tel,s'
est une réponse valide (mais légèrement plus longue, à 77 octets) à la question.À ce stade, je commence presque à penser que "les différences dans le fait que la sortie se termine ou non avec une nouvelle ligne suffisante pour compter deux programmes comme différents" devraient être considérées comme une faille standard, étant donné qu'il semble s'agir d'un deuxième ensemble de langues. (au-delà du GolfScript / CJam bien connu) dans lequel il est possible de réussir l'astuce.
la source
Vitsy (mode sans échec) et Y, 9 octets, sans concurrence.
À Vitsy, c'est une quine. En Y, cela s'imprime
Ugrd3*Z'
; lors de l'exécution, cela s'imprimeUgrd3*Z'
, ce qui est une quine dans Y. Y postdate la question, cependant.Ce que Vitsy voit:
Ce que Y voit:
la source
CJam + GolfScript, 9 octets
Ceci est une quine dans CJam. Dans GolfScript, il se produit avec une nouvelle ligne de fin, qui est une quine dans GolfScript.
Je ne sais pas si CJam doit être considéré comme un dérivé trivial de GolfScript. Mais je pense qu'ils sont assez différents et du moins pas insignifiants.
la source