^"
>#001p#"<>:#,_@#1-8*3:-1*57+55-1*79*57:-1:*77**278\-1:*57$p:1: error: declaration expected
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 un declaration 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 une p
(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 la p
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 un p
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.