Aller au contenu

Que fait ce programme ?


theocrite

Messages recommandés

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

" 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é :transpi:

Lien vers le commentaire
Partager sur d’autres sites

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 :yes:

EDIT : Mouias bof l'indentation IPB....

http://www0.us.ioccc.org/1989/roemer.c

Lien vers le commentaire
Partager sur d’autres sites

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 :yes:

Lien vers le commentaire
Partager sur d’autres sites

#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

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 :reflechis:

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

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

les gar vous m'en boucher un coin :craint: vous zét trop for :D , 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 :p

Je vais remettre un projet comme ça à un de mes profs, juste pour voir sa tete :roll:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...