theocrite Posté(e) le 12 février 2005 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
Tintaspi Posté(e) le 12 février 2005 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
Ago Posté(e) le 12 février 2005 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é
keneda212 Posté(e) le 12 février 2005 Posté(e) le 12 février 2005 ca compile ca ? je crois pas mais bon avec tous ces 1 je me trompe peut etre Citation malloc ( ) a pas de paramètre ?
theocrite Posté(e) le 12 février 2005 Auteur 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).
keneda212 Posté(e) le 12 février 2005 Posté(e) le 12 février 2005 ben .... ca compile pas. erreur sur les mallocs
keneda212 Posté(e) le 12 février 2005 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++
theocrite Posté(e) le 12 février 2005 Auteur 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++.
Cerel Posté(e) le 12 février 2005 Posté(e) le 12 février 2005 Hmmm, je dirais que ce programme fait ca : Citation n !J'ai pas compile, je n'ai fait que copier le code dans un vrai editeur ...
Charles.w Posté(e) le 13 février 2005 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 )
theocrite Posté(e) le 13 février 2005 Auteur 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
Duke98 Posté(e) le 13 février 2005 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....
Ago Posté(e) le 13 février 2005 Posté(e) le 13 février 2005 Duke98 a dit : 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/
theocrite Posté(e) le 13 février 2005 Auteur 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
Charles.w Posté(e) le 13 février 2005 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...
theocrite Posté(e) le 13 février 2005 Auteur Posté(e) le 13 février 2005 Tu n'as pas fait çà à la main j'espère ? sed perl sont tes amis
Charles.w Posté(e) le 13 février 2005 Posté(e) le 13 février 2005 theocrite a dit : Tu n'as pas fait çà à la main j'espère ? Non, la fonction remplacer de UltraEdit marche assez bien
Duke98 Posté(e) le 13 février 2005 Posté(e) le 13 février 2005 theocrite a dit : 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" ???
Irgoff Posté(e) le 14 février 2005 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.
Irgoff Posté(e) le 15 février 2005 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
nedjmou Posté(e) le 16 février 2005 Posté(e) le 16 février 2005 Irgoff a dit : 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é
Nis Posté(e) le 17 février 2005 Posté(e) le 17 février 2005 nedjmou a dit : 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
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.