IOCCC: concours international du code C le plus obscur
5 participants
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 1
IOCCC: concours international du code C le plus obscur
Récréation
Ami lecteur, si vous m'avez suivi jusqu'au bout de ce chapitre indigeste, vous méritez un divertissement.
Tous les ans, est organisé sur Internet le concours international du code C le plus obscur (International Obfuscated C Code Competition, IOCCC en abrégé). Le but est de produire un programme qui se compile et s'exécute sans erreur, dont le source est volontairement le plus obscur possible (ce qui est facile), mais qui est > à un titre ou à un autre. C'est sur ce dernier point que doit s'exercer la créativité des participants. Tous les ans, les meilleures contributions sont de véritables joyaux et sont librement accessibles via l' URL : ftp://ftp.uu.net/pub/ioccc.
Nous présentons ci-dessous la contribution de Brian Westley pour l'année 1990. Son programme a ceci d'extraordinaire que le source C peut se lire comme un texte en > : il s'agit d'une conversation épistolaire entre un amoureux et sa belle (rétive, hélas pour lui). Il y a quelques petites licences prises par rapport à du vrai anglais : 1s est pris comme une approximation du mot anglais is, 1l est pris comme approximation de ll (dans I'll get a break) et des signes cabalistiques sont introduits entre les mots, mais c'est parfaitement lisible.
Il y a aussi un problème avec le langage C : le compilateur utilisé en 1990 par B. Westley n'était pas ANSI et acceptait le suffixe s derrière une constante entière pour lui donner le type short int. Si on transforme les 1s en 1, le programme se compile et s'exécute sans erreur. L'exécutable est un programme ... d'effeuillage de la marguerite ! Il faut lui passer en paramètre un nombre sensé être le nombre de pétales de la marguerite, et le programme va > : love me, love me not, love me, love me not etc. 1.8 un nombre de fois égal au nombre de pétales. Voici le texte du programme :
char*lie;
double time, me= !0XFACE,
not; int rested, get, out;
main(ly, die) char ly, **die ;{
signed char lotte,
dear; (char)lotte--;
for(get= !me;; not){
1 - out & out ;lie;{
char lotte, my= dear,
**let= !!me *!not+ ++die;
(char*)(lie=
"The gloves are OFF this time, I detest you, snot\n\0sed GEEK!");
do {not= *lie++ & 0xF00L* !me;
#define love (char*)lie -
love 1s *!(not= atoi(let
[get -me?
(char)lotte-
(char)lotte: my- *love -
'I' - *love - 'U' -
'I' - (long) - 4 - 'U' ])- !!
(time =out= 'a'));} while( my - dear
&& 'I'-1l -get- 'a'); break;}}
(char)*lie++;
(char)*lie++, (char)*lie++; hell:0, (char)*lie;
get *out* (short)ly -0-'R'- get- 'a'^rested;
do {auto*eroticism,
that; puts(*( out
- 'c'
-('P'-'S') +die+ -2 ));}while(!"you're at it");
for (*((char*)&lotte)^=
(char)lotte; (love ly) [(char)++lotte+
!!0xBABE];){ if ('I' -lie[ 2 +(char)lotte]){ 'I'-1l ***die; }
else{ if ('I' * get *out* ('I'-1l **die[ 2 ])) *((char*)&lotte) -=
'4' - ('I'-1l); not; for(get=!
get; !out; (char)*lie & 0xD0- !not) return!!
(char)lotte;}
(char)lotte;
do{ not* putchar(lie [out
*!not* !!me +(char)lotte]);
not; for(;!'a';);}while(
love (char*)lie);{
register this; switch( (char)lie
[(char)lotte] -1s *!out) {
char*les, get= 0xFF, my; case' ':
*((char*)&lotte) += 15; !not +(char)*lie*'s';
this +1s+ not; default: 0xF +(char*)lie;}}}
get - !out;
if (not--)
goto hell;
exit( (char)lotte);}
Ami lecteur, si vous m'avez suivi jusqu'au bout de ce chapitre indigeste, vous méritez un divertissement.
Tous les ans, est organisé sur Internet le concours international du code C le plus obscur (International Obfuscated C Code Competition, IOCCC en abrégé). Le but est de produire un programme qui se compile et s'exécute sans erreur, dont le source est volontairement le plus obscur possible (ce qui est facile), mais qui est > à un titre ou à un autre. C'est sur ce dernier point que doit s'exercer la créativité des participants. Tous les ans, les meilleures contributions sont de véritables joyaux et sont librement accessibles via l' URL : ftp://ftp.uu.net/pub/ioccc.
Nous présentons ci-dessous la contribution de Brian Westley pour l'année 1990. Son programme a ceci d'extraordinaire que le source C peut se lire comme un texte en > : il s'agit d'une conversation épistolaire entre un amoureux et sa belle (rétive, hélas pour lui). Il y a quelques petites licences prises par rapport à du vrai anglais : 1s est pris comme une approximation du mot anglais is, 1l est pris comme approximation de ll (dans I'll get a break) et des signes cabalistiques sont introduits entre les mots, mais c'est parfaitement lisible.
Il y a aussi un problème avec le langage C : le compilateur utilisé en 1990 par B. Westley n'était pas ANSI et acceptait le suffixe s derrière une constante entière pour lui donner le type short int. Si on transforme les 1s en 1, le programme se compile et s'exécute sans erreur. L'exécutable est un programme ... d'effeuillage de la marguerite ! Il faut lui passer en paramètre un nombre sensé être le nombre de pétales de la marguerite, et le programme va > : love me, love me not, love me, love me not etc. 1.8 un nombre de fois égal au nombre de pétales. Voici le texte du programme :
char*lie;
double time, me= !0XFACE,
not; int rested, get, out;
main(ly, die) char ly, **die ;{
signed char lotte,
dear; (char)lotte--;
for(get= !me;; not){
1 - out & out ;lie;{
char lotte, my= dear,
**let= !!me *!not+ ++die;
(char*)(lie=
"The gloves are OFF this time, I detest you, snot\n\0sed GEEK!");
do {not= *lie++ & 0xF00L* !me;
#define love (char*)lie -
love 1s *!(not= atoi(let
[get -me?
(char)lotte-
(char)lotte: my- *love -
'I' - *love - 'U' -
'I' - (long) - 4 - 'U' ])- !!
(time =out= 'a'));} while( my - dear
&& 'I'-1l -get- 'a'); break;}}
(char)*lie++;
(char)*lie++, (char)*lie++; hell:0, (char)*lie;
get *out* (short)ly -0-'R'- get- 'a'^rested;
do {auto*eroticism,
that; puts(*( out
- 'c'
-('P'-'S') +die+ -2 ));}while(!"you're at it");
for (*((char*)&lotte)^=
(char)lotte; (love ly) [(char)++lotte+
!!0xBABE];){ if ('I' -lie[ 2 +(char)lotte]){ 'I'-1l ***die; }
else{ if ('I' * get *out* ('I'-1l **die[ 2 ])) *((char*)&lotte) -=
'4' - ('I'-1l); not; for(get=!
get; !out; (char)*lie & 0xD0- !not) return!!
(char)lotte;}
(char)lotte;
do{ not* putchar(lie [out
*!not* !!me +(char)lotte]);
not; for(;!'a';);}while(
love (char*)lie);{
register this; switch( (char)lie
[(char)lotte] -1s *!out) {
char*les, get= 0xFF, my; case' ':
*((char*)&lotte) += 15; !not +(char)*lie*'s';
this +1s+ not; default: 0xF +(char*)lie;}}}
get - !out;
if (not--)
goto hell;
exit( (char)lotte);}
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7872
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: IOCCC: concours international du code C le plus obscur
TROP ORIGINAL et SPECIAL COMME CONCOURS!
Si on lit le code source, on dirait c'est un récit écrit en anglais.
Un récit qui a un sens.
Mais, c pa évident d'écrire un code pareil.
a+
Si on lit le code source, on dirait c'est un récit écrit en anglais.
Un récit qui a un sens.
Mais, c pa évident d'écrire un code pareil.
a+
informix- Nombre Rationnel
- Nombre de messages : 399
Réputation : 4
Points : 6526
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: IOCCC: concours international du code C le plus obscur
je n'arrive pas à comprendre une instruction, bienqu'il soit correct comme code en C.
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7254
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: IOCCC: concours international du code C le plus obscur
Sans commentaires pour le code ci-dessus.
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6255
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: IOCCC: concours international du code C le plus obscur
slt
pour faire un expose g besoin de savoir les generations d 1 ordinateur et plus preseisamenet la 1ere
merci d avence
pour faire un expose g besoin de savoir les generations d 1 ordinateur et plus preseisamenet la 1ere
merci d avence
medch- Entier Naturel
- Nombre de messages : 16
Localisation : tunis
Réputation : 0
Points : 6236
Date d'inscription : 28/10/2007
Re: IOCCC: concours international du code C le plus obscur
medch a écrit:slt
pour faire un expose g besoin de savoir les generations d 1 ordinateur et plus preseisamenet la 1ere
merci d avence
Ton message va être déplacé vers le lien suivant: Histoire des ordinateurs
@+
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7872
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Sujets similaires
» Code source illisible Vs. Code source Optimisé!
» The 2009 International Olympiad in Informatics has been won by a 14 years old...
» Création d'un Laboratoire international associé franco-maghrébin de mathématiques
» simple code
» Code source .m Matlab
» The 2009 International Olympiad in Informatics has been won by a 14 years old...
» Création d'un Laboratoire international associé franco-maghrébin de mathématiques
» simple code
» Code source .m Matlab
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum