theocrite Posté(e) le 12 février 2005 Partager Posté(e) le 12 février 2005 Une question simple : Que fait ce code en C ? #include <stdio.h> #define l11l 0xFFFF #define ll1 for #define ll111 if #define l1l1 unsigned #define l111 struct #define lll11 short #define ll11l long #define ll1ll putchar #define l1l1l(l) l=malloc(sizeof(l111 llll1));l->lll1l=1-1;l->ll1l1=1-1; #define l1ll1 *lllll++=l1ll%10000;l1ll/=10000; #define l1lll ll111(!l1->lll1l){l1l1l(l1->lll1l);l1->lll1l->ll1l1=l1;}\ lllll=(l1=l1->lll1l)->lll;ll=1-1; #define llll 1000 l111 llll1 { l111 llll1 * lll1l,*ll1l1 ;l1l1 lll11 lll [ llll];};main (){l111 llll1 *ll11,*l1l,* l1, *ll1l, * malloc ( ); l1l1 ll11l l1ll; ll11l l11,ll ,l;l1l1 lll11 *lll1,* lllll; ll1(l =1-1;l< 14; ll1ll("\t\"8)>l\"9!.)>vl" [l]^'L'),++l );scanf("%d",&l);l1l1l(l1l) l1l1l(ll11 ) (l1=l1l)-> lll[l1l->lll[1-1] =1]=l11l;ll1(l11 =1+1;l11<=l; ++l11){l1=ll11; lll1 = (ll1l=( ll11=l1l))-> lll; lllll =( l1l=l1)->lll; ll=(l1ll=1-1 );ll1(;ll1l-> lll1l||l11l!= *lll1;){l1ll +=l11**lll1++ ;l1ll1 ll111 (++ll>llll){ l1lll lll1=( ll1l =ll1l-> lll1l)->lll; }}ll1(;l1ll; ){l1ll1 ll111 (++ll>=llll) { l1lll} } * lllll=l11l;} ll1(l=(ll=1- 1);(l<llll)&& (l1->lll[ l] !=l11l);++l); ll1 (;l1;l1= l1->ll1l1,l= llll){ll1(--l ;l>=1-1;--l, ++ll)printf( (ll)?((ll%19) ?"%04d":(ll= 19,"\n%04d") ):"%4d",l1-> lll[l] ); } ll1ll(10); } http://www0.us.ioccc.org/1995/savastio.c EDIT : Interdit de compiler avant de donner la réponse :8 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tintaspi Posté(e) le 12 février 2005 Partager Posté(e) le 12 février 2005 ça multiplie le nombre par tous ses entiers précédent mais nan, j'ai pas triché :8 EDIT: t'as édité trop tard Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ago Posté(e) le 12 février 2005 Partager Posté(e) le 12 février 2005 " This program is an infinite-precision factorial calculator. It will compute the factorial of any number entered to an infinite degree of precision (or the limits of your machine's memory, whichever comes first). I'd suggest you start with small numbers the first few times you run it and gradually work your way up in order to get a feel for the computation time your machine will require. Aside from having an artistic code layout and confusing variable names, the algorithm itself takes advantage of some cute C-isms. Try to figure out how it prints the prompt "Enter number:". Numbers are represented internally by a linked list of blocks each containing 1000 buckets of 4-digit integers. To further confuse matters, the buckets are arranged backwards in the block. For example, the number 8347108947139478934713847134 is represented as: 7134 1384 9347 3947 9471 7108 834" ca peut etre :8 ? edit : moi j'ai pas compilé Lien vers le commentaire Partager sur d’autres sites More sharing options...
keneda212 Posté(e) le 12 février 2005 Partager Posté(e) le 12 février 2005 ca compile ca ? je crois pas mais bon avec tous ces 1 je me trompe peut etre malloc ( ) a pas de paramètre ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 12 février 2005 Auteur Partager Posté(e) le 12 février 2005 1/ Oui ça compile (essaye). 2/ C'est pas un malloc, mais un * malloc 3/ Le malloc, c'est pas utilisé, mais est dans les déclarations de variables (dans une struct en fait). Lien vers le commentaire Partager sur d’autres sites More sharing options...
keneda212 Posté(e) le 12 février 2005 Partager Posté(e) le 12 février 2005 ben .... ca compile pas. erreur sur les mallocs Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 12 février 2005 Auteur Partager Posté(e) le 12 février 2005 Tu compile avec quoi ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
keneda212 Posté(e) le 12 février 2005 Partager Posté(e) le 12 février 2005 ben dans un sens j'ai honte de le dire je peux pas avoir internet sous linux alors je suis sur windows et j'utilise M$ visual c++ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ago Posté(e) le 12 février 2005 Partager Posté(e) le 12 février 2005 le c++ est compatible c Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 12 février 2005 Auteur Partager Posté(e) le 12 février 2005 Hum... étonnant que ça ne compile pas quand même. Un mauvais point pour MS visual C++. Essaye avec DevC++. EDIT : Oui, tu peux compiler du C avec un compilo C++, mais ce n'est pas le problème, tu peux choisr de compiler en mode C ou C++. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Cerel Posté(e) le 12 février 2005 Partager Posté(e) le 12 février 2005 Hmmm, je dirais que ce programme fait ca : n !J'ai pas compile, je n'ai fait que copier le code dans un vrai editeur ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Charles.w Posté(e) le 13 février 2005 Partager Posté(e) le 13 février 2005 A première vue, je dirais qu'il calcule la factorielle d'un nombre non ? Suffit de savoir lire...Après pour avoir le code à partir de celui de théo, ben...prévoir un bon éditeur de texte (on n'a pas le droit de compiler, alors on fait avec ce qu'on a ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 13 février 2005 Auteur Partager Posté(e) le 13 février 2005 Il y en a un autre joli aussi char _3141592654[3141 ],__3141[3141];_314159[31415],_3141[31415];main(){register char* _3_141,*_3_1415, *_3__1415; register int _314,_31415,__31415,*_31, _3_14159,__3_1415;*_3141592654=__31415=2,_3141592654[0][_3141592654 -1]=1[__3141]=5;__3_1415=1;do{_3_14159=_314=0,__31415++;for( _31415 =0;_31415<(3,14-4)*__31415;_31415++)_31415[_3141]=_314159[_31415]= - 1;_3141[*_314159=_3_14159]=_314;_3_141=_3141592654+__3_1415;_3_1415= __3_1415 +__3141;for (_31415 = 3141- __3_1415; _31415;_31415-- ,_3_141 ++, _3_1415++){_314 +=_314<<2; _314<<=1;_314+= *_3_1415;_31 =_314159+_314; if(!(*_31+1) )* _31 =_314 / __31415,_314 [_3141]=_314 % __31415;* ( _3__1415=_3_141 )+= *_3_1415 = *_31;while(* _3__1415 >= 31415/3141 ) * _3__1415+= - 10,(*--_3__1415 )++;_314=_314 [_3141]; if ( ! _3_14159 && * _3_1415)_3_14159 =1,__3_1415 = 3141-_31415;}if( _314+(__31415 >>1)>=__31415 ) while ( ++ * _3_141==3141/314 )*_3_141--=0 ;}while(_3_14159 ); { char * __3_14= "3.1415"; write((3,1), (--*__3_14,__3_14 ),(_3_14159 ++,++_3_14159))+ 3.1415926; } for ( _31415 = 1; _31415<3141- 1;_31415++)write( 31415% 314-( 3,14),_3141592654[ _31415 ] + "0123456789","314" [ 3]+1)-_314; puts((*_3141592654=0 ,_3141592654)) ;_314= *"3.141592";} ca aussi c'est facile, la prochaine fois, j'en met un qui ne représente pas ce qu'il calcule EDIT : Mouias bof l'indentation IPB.... http://www0.us.ioccc.org/1989/roemer.c Lien vers le commentaire Partager sur d’autres sites More sharing options...
Duke98 Posté(e) le 13 février 2005 Partager Posté(e) le 13 février 2005 j'aime bien le concept totalement inutil.... heu théo, tu arrives vraiment à lire le code ? c'est toi qui l'as écrit ? parce que c'est quan meme assez imbitable comme écriture.... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ago Posté(e) le 13 février 2005 Partager Posté(e) le 13 février 2005 j'aime bien le concept totalement inutil....heu théo, tu arrives vraiment à lire le code ? c'est toi qui l'as écrit ? parce que c'est quan meme assez imbitable comme écriture.... http://www0.us.ioccc.org/1995/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 13 février 2005 Auteur Partager Posté(e) le 13 février 2005 Non, c'est pas moi qui ai écrit ça, c'est des pros. C'est imbitable, c'est le but. Il faut arriver à faire le pire code possible, mais qui fonctionne. C'est un concours. J'arrive à en lire certains quand je prends le temps de m'y mettre. C'est pas très dur en fait. C'est comme passer sous linux, il faut juste prendre le temps Lien vers le commentaire Partager sur d’autres sites More sharing options...
Charles.w Posté(e) le 13 février 2005 Partager Posté(e) le 13 février 2005 #include <stdio.h> //#define l11l 0xFFFF //#define ll1 for //#define ll111 if //#define l1l1 unsigned //#define l111 struct //#define lll11 short //#define ll11l long //#define ll1ll putchar #define l1l1l(l) l=malloc(sizeof(struct llll1));l->lll1l=1-1;l->ll1l1=1-1; //#define l1ll1 *lllll++=l1ll%10000;l1ll/=10000; //#define l1lll if(!l1->lll1l){l1l1l(l1->lll1l);l1->lll1l->ll1l1=l1;}lllll=(l1=l1->lll1l)->lll;ll=1-1; //#define llll 1000 struct llll1 { struct llll1 * lll1l,*ll1l1 ;unsigned short lll [ 1000];};main (){struct llll1 *ll11,*l1l,* l1, *ll1l, * malloc ( ); unsigned long l1ll; long l11,ll ,l;unsigned short *lll1,* lllll; for(l =1-1;l< 14; putchar("\t\"8)>l\"9!.)>vl" [l]^'L'),++l );scanf("%d",&l);l1l1l(l1l) l1l1l(ll11 ) (l1=l1l)-> lll[l1l->lll[1-1] =1]=0xFFFF;for(l11 =1+1;l11<=l; ++l11){l1=ll11; lll1 = (ll1l=( ll11=l1l))-> lll; lllll =( l1l=l1)->lll; ll=(l1ll=1-1 );for(;ll1l-> lll1l||0xFFFF!= *lll1;){l1ll +=l11**lll1++ ;*lllll++=l1ll%10000;l1ll/=10000; if (++ll>1000){ if(!l1->lll1l){l1l1l(l1->lll1l);l1->lll1l->ll1l1=l1;}lllll=(l1=l1->lll1l)->lll;ll=1-1; lll1=( ll1l =ll1l-> lll1l)->lll; }}for(;l1ll; ){*lllll++=l1ll%10000;l1ll/=10000; if (++ll>=1000) { if(!l1->lll1l){l1l1l(l1->lll1l);l1->lll1l->ll1l1=l1;}lllll=(l1=l1->lll1l)->lll;ll=1-1;} } * lllll=0xFFFF;} for(l=(ll=1- 1);(l<1000)&& (l1->lll[ l] !=0xFFFF);++l); for (;l1;l1= l1->ll1l1,l= 1000){for(--l ;l>=1-1;--l, ++ll)printf( (ll)?((ll%19) ?"%04d":(ll= 19,"\n%04d") ):"%4d",l1-> lll[l] ); } putchar(10);} Pour l'instant...il doit rester le malloc quelque part, mais où ? Je viens de le compiler tel que et a priori, ca marche... Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 13 février 2005 Auteur Partager Posté(e) le 13 février 2005 Tu n'as pas fait çà à la main j'espère ? sed perl sont tes amis Lien vers le commentaire Partager sur d’autres sites More sharing options...
Charles.w Posté(e) le 13 février 2005 Partager Posté(e) le 13 février 2005 Tu n'as pas fait çà à la main j'espère ? Non, la fonction remplacer de UltraEdit marche assez bien Lien vers le commentaire Partager sur d’autres sites More sharing options...
Duke98 Posté(e) le 13 février 2005 Partager Posté(e) le 13 février 2005 Non, c'est pas moi qui ai écrit ça, c'est des pros.C'est imbitable, c'est le but. Il faut arriver à faire le pire code possible, mais qui fonctionne. C'est un concours. J'arrive à en lire certains quand je prends le temps de m'y mettre. C'est pas très dur en fait. C'est comme passer sous linux, il faut juste prendre le temps d'ailleurs.... c'est vraiment du code écrit par un humain, ou il s'amusent à passer par un algo de mise en "dé-forme" ??? Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 13 février 2005 Auteur Partager Posté(e) le 13 février 2005 Nan, à là force du poignet Lien vers le commentaire Partager sur d’autres sites More sharing options...
Irgoff Posté(e) le 14 février 2005 Partager Posté(e) le 14 février 2005 Pour rendre un code illisible : - commence par te faire un algo avec si possible des boucles (algo de Huffman, manipulation d'arbres, de listes, etc... bref ce que tu veux) - tu remplaces toutes tes variables par des #define ou bien tu les renommes de facon a ce que ce soit confus, idem pour les mots cles. Ajouter des \" \' ou des ( ) ; : qui ne servent a rien est un plus. Definir des classes ou des structures sera utile pour ajouter des -> et des . supplementaires. - tu mets en forme ton code pour qu'un dessin apparaisse. La je ne connais pas de script qui fasse ca... mais ca pourrait se faire. En attendant, c'est a la mimine. Le principe est simple et le resultat souvent impressionnant. Le premier code presente par Theocrite est fort sympathique. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Irgoff Posté(e) le 15 février 2005 Partager Posté(e) le 15 février 2005 En trainant sur codeproject pour trouver de belles classes button je suis tombe sur : http://www.codeproject.com/cpp/mandelbrot_obfuscation.asp Lien vers le commentaire Partager sur d’autres sites More sharing options...
nedjmou Posté(e) le 16 février 2005 Partager Posté(e) le 16 février 2005 En trainant sur codeproject pour trouver de belles classes button je suis tombe sur :http://www.codeproject.com/cpp/mandelbrot_obfuscation.asp les gar vous m'en boucher un coin vous zét trop for , je ne c pa dou vous tiré c connaissance mais jémré bien en possédé Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nis Posté(e) le 17 février 2005 Partager Posté(e) le 17 février 2005 les gar vous m'en boucher un coin vous zét trop for , je ne c pa dou vous tiré c connaissance mais jémré bien en possédé Pour en posséder un minimum il faut déjà savoir écrire en français en fait Sympa comme trucs en tout cas Je vais remettre un projet comme ça à un de mes profs, juste pour voir sa tete Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.