O objetivo é escrever um programa simples "99 garrafas de cerveja" .. válido em pelo menos 2 idiomas distintos (por exemplo, não Python 2 e Python 3). Deve ser um arquivo completo que será executado ou compilado.
Respostas interessantes devem ser votadas, mas a compacidade também conta. (Obviamente, a diversidade de idiomas é o objetivo principal.)
Edição: Eu diria que ter código C normal que faz a mesma coisa com C ++ e Objective-C conta como derivado. O código deve fazer coisas inteligentes para que as linhas tenham significados diferentes com idiomas diferentes.
popularity-contest
polyglot
MadTux
fonte
fonte
Respostas:
C, Perl, PHP, Python, Ruby
Atualização : montei um jsfiddle que ajuda a visualizar o caminho através do código para cada um dos cinco idiomas: http://jsfiddle.net/wK6bD/4/embedded/result/
Uma versão alternativa, que remove todos os comentários e compacta todas as seqüências insignificantes, regex e padrões de substituição: http://jsfiddle.net/wK6bD/5/embedded/result/
E salvei um byte enquanto estava nisso. Acontece que C tinha um ponto e vírgula desnecessário;)
Nota : Este arquivo precisa ser salvo com terminações de linhas mistas . Todas as linhas devem terminar com
LF
(caractere 10 , estilo unix), exceto as duas linhas marcadas-- THIS LINE ENDS WITH CR --
, que devem ser finalizadas comCR
(caractere 13 , estilo mac). Eu recomendo usar o notepad ++ ou outro editor de texto que permita editar manualmente as terminações de linha.Para PHP, supõe-se que
output_buffering
esteja ativado. De acordo com a documentação , isso é codificado permanentemente aoOff
usar a CLI, independentemente dasini
configurações, portanto, precisa ser explicitamente (re) ativado:Isso habilita um buffer de 4kb, que é o valor 'recomendado'. Se você estiver usando um dos
ini
s fornecidos, ele já estará definido, portanto, deve ser executado como está em qualquer servidor da web.O tamanho total do arquivo é 823 bytes (sem contar os comentários sobre as terminações de linha), uma média de 164,6 bytes por idioma.
Versões testadas
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
A saída é idêntica para todos os cinco idiomas (veja abaixo).
Perl, PHP
Eu gosto deste por causa de quão curto é, então eu estou deixando. Também demonstra o quanto um PHP Perl-quer-ser é;)
Uso da amostra:
fonte
C + Ruby
Eles são bem parecidos quando você normaliza a sintaxe! : P
fonte
JavaScript (SpiderMonkey / NodeJS), Perl, PHP, Ruby
EDIT: Adicionado e
Ruby
EDIT 2:
O código:
A saída:
fonte
<?php
não saída Olá Mundo), você pode adicionar outro idioma usando apenas o9
uma vez$i = 9*11;
C ++ e PHP
Eu pensei em tentar.
EDIT: Compactou um pouco.
Isso irá compilar bem como C ++ e cuspirá um bom HTML se for executado através do PHP. De qualquer maneira, a saída é:
fonte
Haskell, PHP
Combinando uma linguagem funcional e uma imperativa!
Em Haskell, eu defini a função
*/
que tornou muito mais fácil trabalhar com comentários em PHP!fonte
Brainfuck, inglês
Origem do BF: http://www.99-bottles-of-beer.net/language-brainfuck-1718.html
fonte
,
e.
causará problemas. Corrija isso adicionando[
antes da parte em inglês e]
no final.beef
e eles não causam problemas.,
lê umNULL
caractere (U+0000
).PHP e 아희 (Aheui)
Aheui foi testado com naheui .
Eu sei que é trapaça, mas funciona de qualquer maneira.
fonte
Isso funcionará no Python 3 e na Julia.
fonte
Isso viola as regras, mas acho que de uma maneira divertida.
Está escrito em C e C ++. Em C ++, ele faz um bom padrão de 99 garrafas.
Em C, primeiro preenche a parede e depois a esvazia.
fonte
BrainFuck e Python 2
Isso será compilado e executado sob o CPython2.7 (e provavelmente outros), além de um intérprete do BrainFuck. Essas são duas línguas distintas, com muito pouca sobreposição, e essa resposta é totalmente trapaça.
A segunda linha é o código executado pelo BrainFuck. Os intérpretes do BrainFuck devem ignorar o restante do código e os intérpretes online o executam.
O restante do código é o código Python. Originalmente, ele iria imprimir todo o conjunto de letras, mas isso não é tão divertido. O mesmo também seria feito para o código BrainFuck, mas explodiu pelas restrições de caracteres nas postagens (em cerca de 270.000 caracteres).
fonte
Lua e (F) ASM
Créditos à Revolution para o Fasm, uma linha, mesmo que tudo entre as linhas 1 e 3 seja ignorado por Lua, para que eu pudesse ter elaborado um programa arbitrário de fasm de longa duração.
O truque é que em lua você pode usar um ponto e vírgula para separar as instruções, escrever várias instruções na mesma linha, enquanto no fasm um ponto e vírgula é o começo de um comentário. S = 10; é uma tarefa válida nos dois idiomas, todo o resto é bastante óbvio
fonte
J, Python 2.x
Estou um pouco atrasado para a festa, mas tudo bem. Nada muito chique aqui, porque é a minha primeira vez em poliglotas. Python é quase impossível de ser misturado adequadamente com J; então eu basicamente comentei J em Python e fiz dele uma string literal em J. Provavelmente adicionarei mais idiomas mais tarde.
fonte
C # + Ruby
executar (Ruby):
ruby -x script.cs
fonte
Isso deve funcionar em C, C ++ e Objective-C. O Objective-C ++ não foi testado, mas provavelmente funcionará:
fonte
is valid in at least 2 distinct languages (e.g. not Python2 and Python3)
- Eu diria que isso absolutamente não cumpre esse requisito. OP chamada embora.Ruby, Golfscript
fonte