El objetivo es escribir un programa simple "99 Botellas de cerveza" ... que sea válido en al menos 2 idiomas distintos (p. Ej., Python 2 y Python 3). Debe ser un archivo completo que se ejecutará o compilará.
Las respuestas interesantes deberían votarse positivamente, pero la compacidad también cuenta. (Por supuesto, la diversidad de idiomas es el objetivo principal).
EDITAR: Diría que tener un código C normal que haga lo mismo con C ++ y Objective-C cuenta como derivado. El código debe hacer cosas inteligentes para que las líneas tengan diferentes significados con diferentes idiomas.
popularity-contest
polyglot
MadTux
fuente
fuente
Respuestas:
C, Perl, PHP, Python, Ruby
Actualización : he creado un jsfiddle que ayuda a visualizar la ruta a través del código para cada uno de los cinco idiomas: http://jsfiddle.net/wK6bD/4/embedded/result/
Una versión alternativa, que elimina todos los comentarios y comprime todas las cadenas insignificantes, expresiones regulares y patrones de reemplazo: http://jsfiddle.net/wK6bD/5/embedded/result/
Y guardé un byte mientras estaba en eso. Resulta que C tenía un punto y coma innecesario;)
Nota : este archivo debe guardarse con terminaciones de línea mixtas . Todas las líneas deben terminarse con
LF
(char 10 , también conocido como estilo unix), excepto las dos líneas marcadas-- THIS LINE ENDS WITH CR --
, que deben terminarse conCR
(char 13 , también conocido como estilo mac). Recomiendo usar notepad ++ u otro editor de texto que le permita editar manualmente los finales de línea.Para PHP, se supone que
output_buffering
está habilitado. Según la documentación , esto está codificadoOff
cuando se usa la CLI, independientemente de laini
configuración, por lo que debe habilitarse (re) explícitamente:Esto habilita un búfer de 4 kb, que es el valor 'recomendado'. Si está utilizando uno de los
ini
s suministrados , esto ya estará configurado, por lo que debería ejecutarse tal cual desde cualquier servidor web.El tamaño total del archivo es de 823 bytes (sin contar los comentarios sobre los finales de línea), un promedio de 164.6 bytes por idioma.
Versiones probadas
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 salida es idéntica para los cinco idiomas (ver más abajo).
Perl, PHP
Me gusta este por lo corto que es, así que lo dejo. También demuestra cuánto de Perl-wanna-be PHP es;)
Uso de muestra:
fuente
C + Ruby
¡En realidad son bastante similares una vez que normalizas la sintaxis! :PAGS
fuente
JavaScript (SpiderMonkey / NodeJS), Perl, PHP, Ruby
EDITAR: agregado y
Ruby
EDITAR 2:
El código:
La salida:
fuente
<?php
no da salida a Hello World), puede agregar otro idioma solo usando el9
$i = 9*11;
C ++ y PHP
Pensé en intentarlo.
EDITAR: Compactado un poco.
Esto se compilará bien como C ++ y escupirá un buen HTML si se ejecuta a través de PHP. De cualquier manera, la salida es:
fuente
Haskell, PHP
¡Combinando un lenguaje funcional e imperativo!
¡En Haskell, definí la función
*/
que hizo que trabajar con comentarios PHP fuera mucho más fácil!fuente
Brainfuck, Inglés
Fuente para BF: http://www.99-bottles-of-beer.net/language-brainfuck-1718.html
fuente
,
y.
causarán problemas. Solucione esto agregando[
antes de la parte en inglés y]
al final.beef
y no causan problemas.,
lee unNULL
caracter (U+0000
).PHP y 아희 (Aheui)
Aheui fue probado con naheui .
Sé que es trampa, pero funciona de todos modos.
fuente
Esto funcionará en Python 3 y en Julia.
fuente
Esto viola las reglas, pero creo que de una manera divertida.
Está escrito en C y C ++. En C ++ hace un 99 botellas bastante estándar.
En C, primero llena la pared, luego la vacía.
fuente
BrainFuck y Python 2
Esto compilará y se ejecutará bajo CPython2.7 (y probablemente otros), así como un intérprete BrainFuck. Estos son dos idiomas distintos, con muy poca superposición, y esta respuesta es totalmente engañosa.
La segunda línea es el código ejecutado BrainFuck. Los intérpretes de BrainFuck deben ignorar el resto del código, y los intérpretes en línea lo ejecutarán.
El resto del código es el código Python. Originalmente solo iba a imprimir todo el conjunto de letras, pero eso no es tan divertido. Lo mismo también se iba a hacer para el código BrainFuck, pero sopló por las restricciones de caracteres en las publicaciones (alrededor de 270,000 caracteres).
fuente
Lua y (F) ASM
Créditos a Revolution for the Fasm one liner, a pesar de que Lua ignora todo lo que hay entre las líneas 1 y 3, por lo que podría haber escrito un programa arbitrario de fasm largo allí.
El truco es que en lua puedes usar un punto y coma para separar las instrucciones, escribir múltiples instrucciones en la misma línea, mientras que en fasm un punto y coma es el comienzo de un comentario. S = 10; es una asignación válida en ambos idiomas, todo lo demás es bastante obvio
fuente
J, Python 2.x
Llego un poco tarde a la fiesta, pero bueno. Nada demasiado elegante aquí, porque es mi primera vez poliglotando. Python es bastante imposible de mezclar adecuadamente con J; así que básicamente comenté J en Python e hice de Python un literal de cadena en J. Probablemente agregaré más idiomas más tarde.
fuente
C # + Ruby
ejecutar (Ruby):
ruby -x script.cs
fuente
Esto debería funcionar en C, C ++ y Objective-C. Objective-C ++ no ha sido probado pero probablemente funcionará:
fuente
is valid in at least 2 distinct languages (e.g. not Python2 and Python3)
- Diría que esto absolutamente no pasa ese requisito. Sin embargo, la llamada de OP.Ruby, Golfscript
fuente