23 fusions, 713 octets
Le seul langage que je connaisse vraiment est Befunge, alors au lieu de plusieurs, je viens d’utiliser plusieurs implémentations de Befunge. Je crois que cela est toujours valable en vertu des règles du PPCG, qui considèrent le langage comme étant défini par sa mise en œuvre .
8023/# !-1401p680p88+79*6+1p238*7+0pg90p$#v0';1';+>9%80p$$$$"ph~s"+3vv
vv_2#!>#-/\#21#:+#:>#\<0/-2*3`0:-/2g01g00p>#< 2#0 ^#1/4*:*9"9"p00***<<
>>$:2%3*-4/3g68*-70p1-0`02-3/-03-2%1+2/-70g+80g65+70g`7++3g68*-70g9`*v
0168:0>0133?45130120340200v00:<+8*+76%4p00+5/4:+-*86g3++98/2%+98g09+<<
@>gg#^:#+,#$"!"-#1_@
!Helo Byd!!!!!Hai dunia!!!!Ciao mondo!!!Hallo Wereld!!!!
!Hallo Welt!!!Halo Dunia!!!Halo Dunya!!!Bonjour monde!!!
!Hei Verden!!!Hej Verden!!!Moien Welt!!!Labas pasauli!!!
!Molo Lizwe!!!Salut Lume!!!Hei maailma!!Sveika pasaule!!
!Hello World!!Salom Dunyo!!Tere maailm!!Sawubona Mhlaba!
!Kaixo Mundua!Salamu Dunia!Sannu Duniya!!!!!!!!!!!!!!!!!
Ce qui est frustrant à propos de Befunge, c’est que, même s’il existe une implémentation de référence open source et que le langage lui-même est extrêmement simple, il n’existe pas un seul interpréteur tiers (à ma connaissance) correspondant au comportement de référence. Chaque implémentation échoue de manière différente.
Sur le plan positif, cela nous donne l’opportunité de développer un code unique qui produira un résultat différent dans presque chaque interprète. Et c'est ce que je tente dans le programme ci-dessus.
Si quelqu'un souhaite vérifier les résultats, j'ai essayé de regrouper les différentes implémentations en catégories, en fonction de leur facilité de mise en œuvre (par exemple, certaines personnes peuvent ne pas être en mesure d'exécuter des fichiers binaires Windows ou peuvent ne pas être disposées à le faire. construire à partir des sources, mais tout le monde devrait pouvoir tester les interprètes en ligne).
Interprètes en ligne
Aucune installation requise. Il suffit généralement de coller le code et de cliquer sur un bouton ou deux. Mais notez que certaines d’entre elles sont assez lentes et peuvent donc nécessiter un peu de temps pour terminer l’exécution.
Le terrain de jeu Befunge d'Alexios -
Salamu Dunia!
Cliquez sur le Clear...bouton et collez le code dans le champ de saisie. Basculez le Editcommutateur pour activer l'interprète, puis cliquez sur le Runbouton pour lancer l'exécution.
Notez que ce site ne fonctionnera probablement pas dans un navigateur autre que Chrome.
Befungius -
Molo Lizwe!
Collez le code dans le champ de saisie en veillant à écraser le code existant. Puis cliquez sur le Runbouton pour exécuter.
Interprète Befunge 93 de David Klick -
Sannu Duniya!
Collez le code dans le champ de saisie Playfield , puis cliquez sur le Runbouton pour lancer l’exécution.
Interprète Befunge-93 d'Ian Osgood -
Salut Lume!
Collez le code dans le champ de saisie situé sous le Showbouton, en veillant à remplacer le texte existant @
. Cliquez sur le Showbouton pour importer le code, puis sur Runpour lancer l'exécution.
jsFunge IDE -
Hej Verden!
Fermez d'abord la boîte de dialogue Aide , puis cliquez sur le bouton Ouvrir / Importer de la barre d'outils (deuxième en partant de la gauche), collez le code et cliquez sur OK. Pour l'exécuter, cliquez sur le bouton Mode d' exécution (quatrième à gauche), puis sur Démarrer (cinquième à gauche).
Notez également que quelques-uns des interprètes basés sur la console sont actuellement disponibles sur TIO. Par conséquent, bien qu'ils ne soient pas techniquement des interprètes en ligne, ils peuvent être testés en ligne. Pour ceux qui sont pris en charge (actuellement BEF, FBBI, MTFI et PyFunge), j'ai inclus un essai en ligne! lien à côté de leur entrée.
IDEs Java
Le programme d’exécution Java doit être installé pour ces applications, mais elles devraient théoriquement fonctionner sur n’importe quelle plate-forme. Seulement testé sur Windows cependant.
Ashley Mills 'Visual Befunge Applet -
Moien Welt!
Il s’agissait au départ d’un applet en ligne qui n’est malheureusement plus disponible, mais vous pouvez toujours télécharger le fichier jar et l’exécuter localement en tant qu’application de bureau. Vous devrez coller le code dans la fenêtre de l' éditeur de programme , puis cliquer sur le Convertbouton, puis sur le Runbouton.
WASABI: Wasabi est un interprète superbe en Bungee Asinine -
Hallo Welt!
Pour coller le code, cliquez avec le bouton droit de la souris dans le coin supérieur gauche de la fenêtre de l'éditeur (ce doit être tout en haut à gauche) et sélectionnez l' élément de menu Coller . Activez ensuite la case à cocher Pleine vitesse (sinon cela prendra une éternité), puis cliquez sur le Run!bouton pour commencer à exécuter.
YABI93: Encore un autre interprète de Befunge93 -
Halo Dunia!
Appuyez sur Ctrl+ A, Ctrl+ Vpour coller le code dans la fenêtre de l'éditeur, en veillant à remplacer la source par défaut. Puis cliquez sur le Startbouton pour commencer à exécuter.
IDE Windows
Vous aurez généralement besoin de Windows pour ces applications, bien que dans certains cas, des fichiers binaires puissent être disponibles pour d'autres systèmes d'exploitation. Je ne peux pas promettre que le code fonctionnera sur d'autres plateformes cependant.
BefunExec -
Bonjour tout le monde!
Vous ne pouvez pas coller le code dans l'éditeur, vous devez donc d'abord l'enregistrer sur le disque quelque part. Ensuite, à partir de l'EDI, utilisez le menu Fichier> Ouvrir pour charger le code à partir du disque, puis sélectionnez le menu Simulation> Exécuter / Pause pour l'exécuter.
BeQunge -
Labas pasauli!
Appuyez sur Ctrl+ Vpour coller le code, puis cliquez sur le bouton de débogage de la barre d’outils (le rouage bleu) pour commencer l’exécution. Une fois que le panneau du débogueur apparaît, vous voudrez régler la vitesse au maximum - le bouton à droite du curseur - sinon, la fin prendra indéfiniment.
Champignon -
Tere maailm!
Appuyez sur Ctrl+ Vpour coller le code, puis appuyez sur F5pour l'exécuter.
Visbef: Visual Befunge '93 pour Windows -
Bonjour à tous!
Vous ne pouvez pas coller le code dans l'éditeur, vous devez donc d'abord l'enregistrer sur le disque quelque part. Ensuite, à partir de l'EDI, appuyez sur Ctrl+ Opour ouvrir le navigateur de fichiers, chargez le code à partir du disque et appuyez sur F5pour l'exécuter.
Applications de la console Windows
Là encore, ils nécessitent généralement Windows, bien que d’autres plates-formes puissent être disponibles, mais leur fonctionnement ne soit pas garanti.
Dans tous les cas, le code devra être enregistré dans un fichier sur le disque et le nom du fichier transmis à l'interpréteur en tant que paramètre de ligne de commande ( source.bf dans les exemples de lignes de commande donnés ci-dessous). Notez également que certains d'entre eux sont techniquement des interpréteurs Befunge-98 et doivent être exécutés avec une option de ligne de commande particulière pour forcer un mode de compatibilité Befunge-93. Si vous ne le faites pas, vous n'obtiendrez pas les bons résultats.
BEFI: Interprète Befunge-93 de Rugxulo -
Hei Verden!
Ligne de commande: bef93w32 -q source.bf
CCBI: Interprète simultané Befunge-98 conforme -
Sveika pasaule!
Ligne de commande: ccbi --befunge93 source.bf
MTFI: Interprète Magus Technica Funge -
Hai dunia!
Ligne de commande: mtfi -3 source.bf
( essayez-le en ligne! )
Applications console Python et PHP
Celles-ci nécessitent le langage de script approprié installé - Python ou PHP.
Befungee -
Helo Byd!
Ligne de commande: befungee.py source.bf
PyFunge -
Halo Dunya!
Ligne de commande: pyfunge -v 93 source.bf
( essayez-le en ligne! )
Bephunge -
Bonjour monde!
Ligne de commande: php bephunge.phps source.bf
Applications de console source uniquement
Celles-ci devront être construites à partir des sources, ce qui est généralement plus facile avec un environnement de type * nix. Sous Windows, j'utilise le sous-système Windows pour Linux .
BEF: Distribution de référence Befunge-93 -
Ciao mondo!
Ligne de commande: bef -q source.bf
( essayez-le en ligne! )
cfunge -
Sawubona Mhlaba!
Ligne de commande: cfunge -s 93 source.bf
FBBI: Befunge-98 Flamboyant Intepreter -
Hei maailma!
Ligne de commande: fbbi -93 source.bf
( essayez-le en ligne! )
Champignons -
Kaixo Mundua!
Ligne de commande: fungi source.bf
Rc / Funge-98 -
Salom Dunyo!
Ligne de commande: rcfunge -93 source.bf
Comment ça fonctionne
Le défi à relever consistait à trouver le plus petit nombre de tests offrant la plus grande différenciation entre les interprètes. En fin de compte, il s’agissait de quatre séquences de tests principales:
Le premier est une mémoire hors limites lue à partir du décalage -1,1. En théorie, cela devrait toujours renvoyer 32 (espace ASCII), mais il y avait en fait 10 variations dans la pratique. Ce test est compliqué par le fait que deux des interprètes tombent en panne après une lecture en dehors des limites; deux ou trois tests dans des cas spéciaux (arrondi de division et séparation d'espace) ont donc été nécessaires pour les forcer à revenir dans les limites.
La deuxième séquence est un test de la fonctionnalité de Befunge-98, plus précisément des instructions ;
et '
. Presque tous les interprètes sont Befunge-93 ou sont exécutés en mode de compatibilité Befunge-93. Ils doivent donc ignorer ces instructions. En pratique, cette séquence a été interprétée de 6 manières différentes.
Le troisième test vérifie la plage de cellules mémoire. Dans l'interpréteur de référence, les cellules de mémoire sont signées sur 8 bits, mais les autres implémentations varient de 8 bits à sans limite, certaines signées et d'autres non signées. Cependant, pour les besoins de ce test, nous n'avons dû distinguer que 5 de ces variantes.
La quatrième et dernière séquence est une combinaison de tests de débordement et de division négative. Les interpréteurs se trompent de plusieurs manières, et il existe au moins trois manières différentes de mettre en œuvre les instructions de division et de modulo, mais nous ne tenons compte que de trois combinaisons.
Chacune de ces séquences a renvoyé un nombre unique, et ces quatre numéros ont été combinés (via des tables de calcul et de conversion de base) afin de produire une valeur finale comprise entre 0 et 22. Cette valeur pourrait ensuite être utilisée comme index pour rechercher le message réel. afficher.