Az alábbiakban néhány furcsa C forráskódot találsz, melyekről első ránézésre nem nyilvánvaló, mit csinálnak (de mindegyik csinál valamit). Ha úgy érzed, hogy értesz a C-hez (esetleg jó jegyet szereztél belőle), itt az idő, hogy próbára tedd fejben fordító képességedet. Bemelegítésképpen következzen egy olyan kód, ami mind C-ben, mind Pascal-ban lefordul:
const struct { /* }=0; begin writeln('Hello, Pascal!'); end. */ int x; } y={0}; #include <stdio.h> main(int argc, char **argv) { printf("Hello, C!\n"); return 0; }
Ha már így belejöttél, fejtsd meg, mit csinál az alábbi program:
#include <stdio.h> main(__,_) { return (__>=_-_)&&main(-1997*main(-1996,-1995)<<main(-__<<2,-__<<2),-2)||(_< __-__)&&((__==_)&&(!main(-2,-__)||printf("%d\n",-__))||(main((__+=_)/ 2,_)-_+main(__-_,__/2-!(_-_))))||(__*__>_||_%__--&&main(__,_)); }
Jöjjön egy újabb gyöngyszem, melynek gyakorlati haszna is van: az stdin-ről beolvas valamit, átalakítja, és kiírja az stdout-ra. De vajon miből áll az átalakítás?
#if defined __MSDOS__ #include <io.h> #define write _write #define read _read #endif #define lII (Il||(Il=((ll=read(Il,&II,1<<1<<11))>Il?ll:Il)))*++*(II-Il--+ll) char II[1<<11<<1],l[1<<1<<11];int lI=1>>11>>1,Il=1>>1>>11,ll=1>>11>>1;int main (int IlI,int I){if(IlI<0)return((!I||lI==1<<11<<1)&&(lI=write(1,&l,lI)&&0))+I+ (I&&(l[lI++]=I-1));else while(main(-1,(I=lII)==1+11+2?lII:((I---11)||main(-1, 14))+I));}
Az előbbiek saját alkotások voltak. Végezetül következzen egy sokkal szebb és érdekesebb rejtvény (származási hely: C forrás, hasonlóak):
main(t,_,a)char*a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,main(-86,0,a +1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?main(2,_+1,"%s" " %d %d\n"):9:16:t<0?t<-72?main(_,t,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{" "*+,/w{%+,/w#q#n+,/#{l,+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'" "K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl" "]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w" "#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;" "{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')" "# }'+}##(!!/" ):t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=='/') +t,_,a+1):0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,"!ek;dc i@bK'(q)" "-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}
1999. szeptember 22.
Budaörs, Magyarország.
Ez a lap pts oldalai közül való.