Le but est d’écrire un programme simple "99 Bottles of Beer" .. valide dans au moins 2 langues distinctes (par exemple, pas Python 2 et Python 3). Ce doit être un fichier complet à exécuter ou à compiler.
Les réponses intéressantes devraient être votées à la hausse, mais la compacité compte également. (Bien entendu, l'objectif principal est la diversité linguistique.)
EDIT: Je dirais qu'avoir du code C normal qui fait la même chose avec C ++ et Objective-C compte comme dérivé. Le code doit faire des choses intelligentes pour que les lignes aient différentes significations avec différentes langues.
popularity-contest
polyglot
MadTux
la source
la source
Réponses:
C, Perl, PHP, Python, Ruby
Mise à jour : j'ai mis au point un jsfiddle qui aide à visualiser le chemin à travers le code pour chacune des cinq langues: http://jsfiddle.net/wK6bD/4/embedded/result/
Une version alternative, qui supprime tous les commentaires et compresse toutes les chaînes, expressions rationnelles et modèles de remplacement insignifiants: http://jsfiddle.net/wK6bD/5/embedded/result/
Et j'ai sauvegardé un octet pendant que j'y étais. Il s'avère que C avait un point-virgule inutile;)
Remarque : ce fichier doit être enregistré avec des fins de ligne mixtes . Toutes les lignes doivent être terminées par
LF
(caractère 10 , style unix), à l'exception des deux lignes marquées-- THIS LINE ENDS WITH CR --
, qui doivent être terminées parCR
(caractère 13 , style mac). Je recommande d'utiliser notepad ++ ou tout autre éditeur de texte qui vous permet de modifier manuellement les fins de ligne.Pour PHP, on suppose que
output_buffering
c'est activé. Selon la documentation , ceci est codé en durOff
lors de l'utilisation de la CLI, quels que soient lesini
paramètres, il doit donc être explicitement activé / ré-activé:Cela active un tampon de 4 Ko, qui est la valeur "recommandée". Si vous utilisez l'un des éléments fournis,
ini
celui-ci sera déjà défini. Il doit donc être exécuté tel quel à partir de n'importe quel serveur Web.La taille totale du fichier est de 823 octets (sans compter les commentaires sur les fins de ligne), soit une moyenne de 164,6 octets par langue.
Versions testées
C - gcc 4.8.1, cl 15.00
Perl - 5.16.2
PHP - 5.4.16
Python - 2.7.6, 3.3.4
Ruby - 1.8.7, 1.9.3
La sortie est identique pour les cinq langues (voir ci-dessous).
Perl, PHP
J'aime celui-ci à cause de sa brièveté, alors je le laisse. Cela montre aussi à quel point PHP est une bonne idée de Perl;
Exemple d'utilisation:
la source
C + rubis
Ils sont en fait assez similaires une fois que vous normalisez la syntaxe! : P
la source
JavaScript (SpiderMonkey / NodeJS), Perl, PHP, Ruby
EDIT: Ajouté et
Ruby
EDIT 2:
Le code:
Le résultat:
la source
<?php
ne délivre pas Bonjour tout le monde), vous pouvez ajouter une autre langue en utilisant uniquement la9
fois$i = 9*11;
C ++ et PHP
Je pensais tenter le coup.
EDIT: Compacte un peu.
Cela compilera très bien en C ++ et créera du bon HTML si vous utilisez PHP. Dans les deux cas, le résultat est:
la source
Haskell, PHP
Combinant un langage fonctionnel et un impératif!
Dans Haskell, j'ai défini la fonction
*/
qui facilitait grandement l'utilisation des commentaires PHP!la source
Brainfuck, anglais
Source pour BF: http://www.99-bottles-of-beer.net/language-brainfuck-1718.html
la source
,
et.
vont causer des problèmes. Corrigez cela en ajoutant[
avant la partie anglaise et]
à la fin.beef
et ils ne causent pas de problèmes.,
lit unNULL
caractère (U+0000
).PHP et 아희 (Aheui)
Aheui a été testé avec Naheui .
Je sais que c'est de la triche, mais ça fonctionne quand même.
la source
Cela fonctionnera dans Python 3 et dans Julia.
la source
Cela viole les règles, mais je pense d'une manière amusante.
Il est écrit en C et C ++. En C ++, il fait un joli standard de 99 bouteilles.
En C, il remplit d'abord le mur, puis le vide.
la source
Brainfuck et Python 2
Cela compilera et fonctionnera sous CPython2.7 (et probablement d’autres) ainsi qu’un interpréteur BrainFuck. Ce sont deux langues distinctes, avec très peu de chevauchement, et cette réponse est totalement trompeuse.
La deuxième ligne est le code BrainFuck-run. Les interprètes de BrainFuck doivent ignorer le reste du code et les interprètes en ligne l’exécutent.
Le reste du code est le code Python. À l'origine, il s'agissait d'imprimer l'ensemble des paroles, mais ce n'est pas aussi amusant. La même chose allait également être faite pour le code BrainFuck, mais les restrictions de caractères dans les publications (environ 270 000 caractères) ont été gâchées.
la source
Lua et (F) ASM
Crédits à la Révolution pour le Fasm un doublon, même si tout ce qui se situe entre les lignes 1 et 3 est ignoré par Lua, de sorte que j’aurais pu écrire un programme de fantasmes long et inutile.
Le truc, c’est que dans Lua, vous pouvez utiliser un point-virgule pour séparer une instruction, écrire plusieurs instructions sur la même ligne, tandis que dans le mode fasm, un point-virgule est le début d’un commentaire. S = 10; est une assignation valide dans les deux langues, tout le reste est assez évident
la source
J, Python 2.x
Je suis un peu en retard à la fête, mais bon. Rien d’exceptionnel ici, car c’est ma première fois polygloter. Python est tout à fait impossible d'être correctement mélangé avec J; j'ai donc essentiellement commenté J en Python et fait de Python une chaîne littérale en J. J'ajouterai probablement plus de langues plus tard.
la source
C # + Ruby
exécuter (Ruby):
ruby -x script.cs
la source
Cela devrait fonctionner en C, C ++ et Objective-C. Objective-C ++ n'a pas été testé mais fonctionnera probablement:
la source
is valid in at least 2 distinct languages (e.g. not Python2 and Python3)
- Je dirais que cela ne satisfait absolument pas à cette exigence. L'appel de l'OP si.Ruby, Golfscript
la source