Celem jest napisanie prostego programu „99 butelek piwa”, który jest ważny w co najmniej 2 różnych językach (np. Nie w Python 2 i Python 3). Musi to być kompletny plik, który zostanie uruchomiony lub skompilowany.
Interesujące odpowiedzi powinny zostać poddane pod głosowanie, ale liczy się również zwartość. (Oczywiście różnorodność językowa jest głównym celem).
EDYCJA: Powiedziałbym, że posiadanie normalnego kodu C, który robi to samo z C ++, a Objective-C liczy się jako pochodna. Kod powinien robić sprytne rzeczy, aby wiersze miały różne znaczenia w różnych językach.
popularity-contest
polyglot
MadTux
źródło
źródło
Odpowiedzi:
C, Perl, PHP, Python, Ruby
Aktualizacja : Stworzyłem jsfiddle, który pomaga wizualizować ścieżkę poprzez kod dla każdego z pięciu języków: http://jsfiddle.net/wK6bD/4/embedded/result/
Alternatywna wersja, która usuwa wszystkie komentarze i kompresuje wszystkie nieznaczące ciągi, wyrażenia regularne i wzorce zastępcze: http://jsfiddle.net/wK6bD/5/embedded/result/
I uratowałem bajt, kiedy na nim byłem. Okazuje się, że C miał niepotrzebny średnik;)
Uwaga : Ten plik musi być zapisany z mieszanymi zakończeniami linii. Wszystkie linie powinny być zakończone
LF
(char 10 , aka w stylu unix), z wyjątkiem dwóch zaznaczonych linii-- THIS LINE ENDS WITH CR --
, które powinny być zakończoneCR
(char 13 , aka mac). Polecam użycie notatnika ++ lub innego edytora tekstu, który pozwala ręcznie edytować zakończenia linii.W przypadku PHP zakłada się, że
output_buffering
jest włączony. Zgodnie z dokumentacją jest to ustalone na stałeOff
podczas korzystania z CLI, niezależnie odini
ustawień, więc należy jawnie (ponownie) włączyć:Umożliwia to bufor 4kb, który jest wartością „zalecaną”. Jeśli używasz jednego z dostarczonych
ini
plików, zostanie to już ustawione, więc powinno działać tak, jak jest z dowolnego serwera WWW.Całkowity rozmiar pliku to 823 bajty (nie licząc komentarzy o zakończeniach linii), średnio 164,6 bajtów na język.
Wersje Testowane
C - GCC 4.8.1 Cl 15,00
Perl - 5.16.2
PHP - 5.4.16
Pythona - 2.7.6, 3.3.4
Ruby - 1.8.7, 1.9.3
Dane wyjściowe są identyczne dla wszystkich pięciu języków (patrz poniżej).
Perl, PHP
Podoba mi się ten, ponieważ jest krótki, więc zostawiam go. Pokazuje także, jak wiele PHP chce być w Perlu;)
Przykładowe użycie:
źródło
C + Ruby
W rzeczywistości są całkiem podobne po normalizacji składni! : P
źródło
JavaScript (SpiderMonkey / NodeJS), Perl, PHP, Ruby
EDYCJA: Dodano i
Ruby
EDYCJA 2:
Kod:
Wyjście:
źródło
<?php
nie9
$i = 9*11;
C ++ i PHP
Myślałem, że spróbuję.
EDYCJA: Trochę go skompresowałem.
To skompiluje się dobrze jako C ++ i wypluje fajny HTML, jeśli zostanie uruchomiony przez PHP. Tak czy inaczej, wynikiem jest:
źródło
Haskell, PHP
Łącząc funkcjonalny i imperatywny język!
W Haskell zdefiniowałem funkcję,
*/
która znacznie ułatwiła pracę z komentarzami PHP!źródło
Brainfuck, angielski
Źródło dla BF: http://www.99-bottles-of-beer.net/language-brainfuck-1718.html
źródło
,
i.
będą powodować problemy. Napraw to, dodając[
przed częścią angielską i]
na końcu.beef
i nie powodują problemów.,
czytaNULL
znak (U+0000
).PHP i 아희 (Aheui)
Aheui zostało przetestowane na Naheui .
Wiem, że to oszustwo, ale i tak działa.
źródło
Działa to w Pythonie 3 i Julii.
źródło
To narusza zasady, ale myślę w zabawny sposób.
Jest napisany w C i C ++. W C ++ robi całkiem standardowe 99 butelek.
W C najpierw wypełnia ścianę, a następnie ją opróżnia.
źródło
BrainFuck and Python 2
Spowoduje to kompilację i uruchomienie w ramach CPython2.7 (i prawdopodobnie innych), a także interpretera BrainFuck. Są to dwa odrębne języki, z niewielkim nakładaniem się, a ta odpowiedź jest całkowicie oszustwem.
Drugi wiersz to kod uruchamiający BrainFuck. Tłumacze BrainFuck powinni zignorować resztę kodu, a tłumacze online go uruchomią.
Reszta kodu to kod Python. Pierwotnie miał po prostu wydrukować cały zestaw tekstów, ale to nie jest tak zabawne. To samo miało być zrobione również dla kodu BrainFuck, ale zawiodły ograniczenia znaków w postach (o około 270 000 znaków).
źródło
Lua i (F) ASM
Kredyty na rewolucję dla Fasm one-line, mimo że wszystko między wierszami 1 i 3 jest ignorowane przez Luę, więc mógłbym napisać tam arbitrary długi program fasm.
Sztuka polega na tym, że w lua można użyć średnika do oddzielenia instrukcji, napisania wielu instrukcji w tym samym wierszu, natomiast w fasm średnik jest początkiem komentarza. S = 10; jest ważnym zadaniem w obu językach, wszystko inne jest dość oczywiste
źródło
J, Python 2.x
Jestem trochę spóźniony na przyjęcie, ale no cóż. Nie ma tu nic nadzwyczajnego, bo to mój pierwszy raz poliglota. Python jest całkiem niemożliwy do prawidłowego zmieszania z J; więc zasadniczo skomentowałem J w Pythonie i uczyniłem z Pythona literał ciągów w J. Prawdopodobnie później dodam więcej języków.
źródło
C # + Ruby
uruchomić (Ruby):
ruby -x script.cs
źródło
Powinno to działać w C, C ++ i Objective-C. Objective-C ++ nie został przetestowany, ale prawdopodobnie będzie działał:
źródło
is valid in at least 2 distinct languages (e.g. not Python2 and Python3)
- Powiedziałbym, że to absolutnie nie spełnia tego wymogu. Ale wezwanie OP.Ruby, Golfscript
źródło