Jaki kod kompiluje się w największej liczbie języków? [Zamknięte]

29

Z wyjątkiem prostych programów, jaki kod kompiluje się w największej liczbie języków?

(Przez „trywialny” mam na myśli wykluczenie takich odpowiedzi, jak pusty program lub tekst, który zostanie powtórzony bezpośrednio).

Poniższy kod najwyraźniej kompiluje się we wszystkich następujących językach programowania (i drukuje w każdym z nich coś innego): C, C ++, Perl, TeX, LaTeX, PostScript, sh, bash, zsh i Prolog.

%:/*:if 0;"true" +s ||true<</;#|+q|*/include<stdio.h>/*\_/
{\if(%)}newpath/Times-Roman findfont 20 scalefont setfont(
%%)pop 72 72 moveto(Just another PostScript hacker,)show((
t)}. t:-write('Just another Prolog hacker,'),nl,halt. :-t.
:-initialization(t). end_of_file. %)pop pop showpage(-: */
int main(){return 0&printf("Just another C%s hacker,\n",1%
sizeof'2'*2+"++");}/*\fi}\csname @gobble\endcsname{\egroup
\let\LaTeX\TeX\ifx}\if00\documentclass{article}\begin{doc%
ument}\fi Just another \LaTeX\ hacker,\end{document}|if 0;
/(J.*)\$sh(.*)"/,print"$1Perl$2$/"if$_.=q # hack the lang!
/
sh=sh;test $BASH_VERSION &&sh=bash;test $POSIXLY_CORRECT&&
sh=sh;test  $ZSH_VERSION && sh=zsh;awk 'BEGIN{x="%c[A%c[K"
printf(x,27,27)}';echo "Just another $sh hacker," #)pop%*/

To 10 różnych języków. Znalazłem go za pośrednictwem pts oldalai (który ma również wspaniały świąteczny wiersz napisany w C, C ++, Perl i TeX). Czy ktoś może zrobić lepiej?

shamp00
źródło
8
Terminem technicznym jest Polyglot
st0le
8
Oto 16-język poliglota
st0le
7
Jeśli sh, bash i zsh liczą się jako różne języki, nawet jeśli zasadniczo używa tylko sh, to uważam, że musisz dokładnie określić, co liczysz jako różne języki. Np. Perl 4 vs Perl 5.10 mają pewne znaczące różnice.
Peter Taylor
7
Istnieją języki (np. Whitespace, BrainF ** k i Perl), w których właściwie dowolna kombinacja znaków jest poprawnym programem. Mogą być przedmiotem roszczenia dowolnego programu.
ugoren

Odpowiedzi:

9

3 języki - C, C ++ i Python

#ifdef _cplusplus
    #include <iostream>
    #define print() int main(){cout << "Hello world! -- from C++" << endl;}
#elif (defined __STDC__) || (defined __STDC_VERSION__)
    #include <stdio.h>
    #define print() int main(){printf("Hello world! -- from C\n");}
#else
import builtins
print = lambda : builtins.print("Hello world! -- from Python")
#endif

print()

W każdym języku drukowane jest coś innego. W C & C ++ wiersze zaczynające się od „#” są dyrektywami przetwarzania wstępnego, ale te same wiersze są komentarzami w Pythonie.

golfer9338
źródło
4

5 języków - czw, Brainf ***, Boolf ***, Treehugger i JavaScript

/*::=
alert::=~This is Thue!
::=
-><[[--->+<]>-.[---->+++++<]>-.+.++++++++++.+[---->+<]>+++.-[--->++<]>-.++++++++++.+[---->+<]>+++.+[->++<]>.---[----->+<]>-.+++[->+++<]>++.++++++++.+++++.--------.---[->+++<]>+...---------.[-]]
^^[[--->+^]>-.[---->+++++^]>-.+.++++++++++.+[---->+^]>+++.-[--->++^]>-.++++++++++.+[---->+^]>+++.>-[--->+^]>-.-[--->+^]>+.-------------..+++.[--->+^]>---.++[->+++^]>++..--.+++++++++++++.[--->+^]>-----.[-]]
-+[+;;+;+;+;+;+;+;;;;+;+;+;;+;+;+;;+;+;+;;+;+;;+;;+;;;+;;;;;;+;+;;+;+;;+;+;+;;+;+;;+;;+;;;+;;;;;;+;+;;;+;+;;;;+;+;+;;;;+;+;;+;+;;;;+;+;;+;;;+;;+;+;;+;;+;;+;;+;;+;;+;+;+;+;+;+;;;+;+;+;+;+;+;;;+;+;+;+;+;+;;+;+;;;;+;+;;]
*/alert("This is Javascript!")

Zauważ, że część Treehuggera przekroczyła limit czasu w implementacji internetowej, niestety, dlatego powinieneś użyć innego interpretera Treehuggera.

SuperJedi224
źródło