Votre tâche est simple: écrire un programme qui peut être exécuté en deux langues. Il doit s'agir d'un quine normal (imprime son propre code source) dans la langue 1, et doit être un quine d'erreur (génère un message d'erreur identique à son propre code source) dans la langue 2.
C'est du code-golf , donc la soumission valide la plus courte (en octets) gagne.
Règles:
- Les langues peuvent être arbitrairement similaires. Les sur-ensembles / versions similaires / dialectes similaires ne sont pas interdits.
- Les règles de quine d'erreur sont les mêmes que celles de Make an Error Quine! .
code-golf
quine
polyglot
error-message
Esolanging Fruit
la source
la source
Réponses:
Befunge-93 (FBBI) / C (tcc) , 93 + 62 = 155 octets
Essayez-le en ligne!: Befunge-93 , C
Merci à randomdude999 d'avoir noté que le nom de fichier nécessite des guillemets correspondants pour fonctionner.
Doit être enregistré sous le nom de fichier
^"\n>#001p#"<>:#,_@#1-8*3:-1*57+55-1*79*57:-1:*77**278\-1:*57$p
, où\n
trouve une nouvelle ligne. Pour cette raison, le TIO pour C ne fonctionne pas exactement comme prévu. Testé pour travailler sur Lubuntu.Explication (C):
Le programme ne parvient pas à compiler et tcc affiche avec bonheur le nom du fichier dans le cadre de son message d'erreur. Il existe plusieurs erreurs de compilation, basées sur le début du code.
^
au début nous donne undeclaration expected
, qui est court et ne contient aucun caractère problématique comme"
. D'un autre côté, les développeurs gcc et clang sont très pessimistes et ont choisi de produire plusieurs erreurs à la fois, ce qui n'est pas très agréable, donc nous n'utilisons pas leurs compilateurs.Explication (Befunge-93):
Befunge est pratique pour les quines dans la mesure où son code peut également être utilisé comme données de caractères, grâce à la
"
commande, qui bascule le mode chaîne. Au début, nous effectuons des opérations de pile inutiles, puis émettons unep
(commande put) qui place un caractère NUL à (0, 1). Ensuite, nous réfléchissons le pointeur d'instruction à gauche et commençons à tout lire sous forme de chaîne. Cela doit être fait vers la gauche, en raison de la nature LIFO de la pile. Après s'être enroulé et avoir à"
nouveau atteint le personnage, la chaîne se termine. Notez que le caractère NUL a remplacé le$
caractère, créant un délimiteur au milieu de la chaîne. Nous poussons ensuite 3 nombres sur la pile et sautons par-dessus le NUL (car il bloque malheureusement l'interpréteur lorsqu'il est exécuté en tant qu'instruction). La partie statique du message d'erreur doit être exécutée ici. La plupart de ses caractères sont sans opération, mais lap
commande consomme trois arguments (d'où la raison pour laquelle nous avons poussé 3 chiffres, sinon une partie de la chaîne serait mangée ici), et les caractères:
&1
poussent un total de 4 valeurs dans la pile, ce que nous neutralisons avec unp
et un$
(pop et jeter) instruction. Ensuite, une certaine arithmétique est effectuée pour pousser les codes ASCII^"\n>#001p#"
et enfin une boucle imprime toutes les valeurs de la pile en tant que caractères jusqu'à ce qu'elle trouve un caractère NUL et se termine.la source
/
. Je ne peux pas le tester moi-même en ce moment.<define>:1: error: missing terminating " character
.Applesoft BASIC / Commodore LCD BASIC , 13 octets
Dans l'émulateur Apple] [, appuyez sur la RESETtouche pour passer en mode BASIC.
Dans l'émulateur LCD Commodore, appuyez sur RightArrowEnterpour accéder à l'application BASIC.
Dans les deux cas, ne saisissez pas
?SYNTAX ERROR
toutes les majuscules, car elles sont automatiquement capitalisées.la source