February 12, 200521 yr 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
February 12, 200521 yr ça multiplie le nombre par tous ses entiers précédent mais nan, j'ai pas triché :8 EDIT: t'as édité trop tard Edited February 12, 200521 yr by Tintaspi
February 12, 200521 yr " 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é
February 12, 200521 yr ca compile ca ? je crois pas mais bon avec tous ces 1 je me trompe peut etre malloc ( ) a pas de paramètre ? Edited February 12, 200521 yr by keneda212
February 12, 200521 yr Author 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).
February 12, 200521 yr 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++
February 12, 200521 yr Author 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++.
February 12, 200521 yr 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 ... Edited February 12, 200521 yr by Cerel
February 13, 200521 yr 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 ) Edited February 13, 200521 yr by Charles.w
February 13, 200521 yr Author 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
February 13, 200521 yr 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....
February 13, 200521 yr 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/
February 13, 200521 yr Author 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
February 13, 200521 yr #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...
February 13, 200521 yr Tu n'as pas fait çà à la main j'espère ? Non, la fonction remplacer de UltraEdit marche assez bien
February 13, 200521 yr 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" ???
February 14, 200521 yr 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.
February 15, 200521 yr En trainant sur codeproject pour trouver de belles classes button je suis tombe sur : http://www.codeproject.com/cpp/mandelbrot_obfuscation.asp
February 16, 200521 yr 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é
February 17, 200521 yr 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
Archived
This topic is now archived and is closed to further replies.