Цель состоит в том, чтобы написать простую программу «99 бутылок пива», которая действительна как минимум на двух разных языках (например, не Python 2 и Python 3). Это должен быть полный файл, который будет запускаться или компилироваться.
Интересные ответы должны быть одобрены, но компактность также имеет значение. (Конечно, языковое разнообразие является основной целью.)
РЕДАКТИРОВАТЬ: Я бы сказал, что иметь нормальный код C, который делает то же самое с C ++ и Objective-C считается производной. Код должен делать умные вещи, чтобы строки имели разные значения в разных языках.
popularity-contest
polyglot
MadTux
источник
источник
Ответы:
C, Perl, PHP, Python, Ruby
Обновление : я собрал jsfiddle, который помогает визуализировать путь через код для каждого из пяти языков: http://jsfiddle.net/wK6bD/4/embedded/result/
Альтернативная версия, которая удаляет все комментарии и сжимает все незначительные строки, регулярные выражения и шаблоны замены: http://jsfiddle.net/wK6bD/5/embedded/result/
И я сохранил байт, пока был на нем. Оказывается, у С была лишняя точка с запятой;)
Обратите внимание : этот файл должен быть сохранен со смешанными окончаниями строк. Все строки должны заканчиваться
LF
(char 10 , также известный как unix-стиль), за исключением двух отмеченных строк-- THIS LINE ENDS WITH CR --
, которые должны заканчиватьсяCR
(char 13 , также известный как mac-style). Я рекомендую использовать notepad ++ или другой текстовый редактор, который позволяет вручную редактировать окончания строк.Для PHP предполагается, что
output_buffering
он включен. Согласно документации , это жестко заданоOff
при использовании интерфейса командной строки независимо отini
настроек, поэтому его необходимо явно (повторно) включить:Это включает буфер 4 КБ, который является «рекомендуемым» значением. Если вы используете один из поставляемых
ini
ключей, он уже будет установлен, поэтому он должен запускаться как есть с любого веб-сервера.Общий размер файла составляет 823 байта (не считая комментариев об окончаниях строк), в среднем 164,6 байта на язык.
Проверенные версии
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
Вывод одинаков для всех пяти языков (см. Ниже).
Perl, PHP
Мне нравится этот, потому что он короткий, поэтому я оставляю его. Это также демонстрирует, какой из Perl-хотят быть PHP;)
Пример использования:
источник
C + Ruby
Они на самом деле очень похожи, когда вы нормализуете синтаксис! :П
источник
JavaScript (SpiderMonkey / NodeJS), Perl, PHP, Ruby
РЕДАКТИРОВАТЬ: Добавлено и
Ruby
РЕДАКТИРОВАТЬ 2:
Код:
Выход:
источник
<?php
есть, не выводит Hello World), вы можете добавить другой язык, используя только9
один раз$i = 9*11;
C ++ и PHP
Я думал, что я попробую.
РЕДАКТИРОВАТЬ: Сжатие это немного.
Это прекрасно скомпилируется как C ++ и будет выдавать красивый HTML, если он запускается через PHP. В любом случае, вывод:
источник
Haskell, PHP
Сочетание функционального и императивного языка!
В Haskell я определил функцию,
*/
которая значительно облегчила работу с комментариями PHP!источник
Brainfuck, английский
Источник для БФ: http://www.99-bottles-of-beer.net/language-brainfuck-1718.html
источник
,
и.
вызовут проблемы. Исправьте это, добавив[
перед английской частью и]
в конце.beef
и они не вызывают проблем.,
читаетNULL
символ (U+0000
).PHP и 아희 (Aheui)
Aheui был протестирован с Naheui .
Я знаю, что это обман, но все равно работает.
источник
Это будет работать в Python 3 и в Julia.
источник
Это нарушает правила, но я думаю, что это забавно.
Это написано на C и C ++. В C ++ это довольно стандартные 99 бутылок.
В С он сначала заполняет стену, затем очищает ее.
источник
BrainFuck и Python 2
Это скомпилирует и запустит под CPython2.7 (и, возможно, другие), а также интерпретатор BrainFuck. Это два разных языка, с очень небольшим совпадением, и этот ответ полностью обманывает.
Вторая строка - это код запуска BrainFuck. Интерпретаторы BrainFuck должны игнорировать остальную часть кода, и он будет запущен онлайн-интерпретаторами .
Остальная часть кода - это код Python. Первоначально он собирался напечатать весь текст, но это не так весело. То же самое должно было быть сделано и для кода BrainFuck, но он не соответствовал ограничениям на количество символов в сообщениях (около 270 000 символов).
источник
Луа и (F) ASM
Кредиты Revolution для Fasm one liner, хотя Lua игнорирует все, что находится между 1 и 3 строками, так что я мог бы написать там длинную программу Fasm.
Хитрость в том, что в lua вы можете использовать точку с запятой для разделения инструкций, чтобы написать несколько инструкций в одной строке, тогда как в fasm точка с запятой является началом комментария. S = 10; является допустимым заданием на обоих языках, все остальное довольно очевидно
источник
J, Python 2.x
Я немного опоздал на вечеринку, ну да ладно. Ничего особенного, потому что это мой первый раз полиглотирование. Python совершенно невозможно правильно смешать с J; поэтому я в основном прокомментировал J в Python и сделал Python строковым литералом в J. Я, вероятно, добавлю больше языков позже.
источник
C # + Ruby
запустить (Ruby):
ruby -x script.cs
источник
Это должно работать в C, C ++ и Objective-C. Objective-C ++ не был протестирован, но, вероятно, будет работать:
источник
is valid in at least 2 distinct languages (e.g. not Python2 and Python3)
- Я бы сказал, что это абсолютно не соответствует этому требованию. Вызов ОП, хотя.Ruby, Golfscript
источник