DR Quine
DR Quine
DR Quine
Dr_Quine
42 Staff [email protected]
II Introduction 3
III Objectifs 4
IV Partie obligatoire 5
V Partie bonus 9
VI Rendu et peer-évaluation 10
1
Chapitre I
Préambule
2
Chapitre II
Introduction
L’opération qui consiste à ouvrir le fichier source et à l’afficher est considérée comme
une tricherie. Plus généralement, un programme qui utilise une quelconque entrée de
données ne peut être considéré comme un quine valide. Une solution triviale est un pro-
gramme dont le code source est vide. En effet, l’exécution d’un tel programme ne produit
pour la plupart des langages aucune sortie, c’est-à-dire le code source du programme.
3
Chapitre III
Objectifs
Pour les curieux, je vous conseille vivement de regarder tout ce qui est lié aux points
fixes !
4
Chapitre IV
Partie obligatoire
Pour ce projet, vous aller devoir recoder trois programmes différents, possédant cha-
cun des propriétés différentes.
• Lors de son exécution, le programme doit afficher sur la sortie standard un output
identique au code source du fichier utilisé pour compiler ce même programme.
$> ls -al
total 12
drwxr-xr-x 2 root root 4096 Feb 2 13:26 .
drwxr-xr-x 4 root root 4096 Feb 2 13:26 ..
-rw-r--r-- 1 root root 647 Feb 2 13:26 Colleen.c
$> clang -Wall -Wextra -Werror -o Colleen Colleen.c; ./Colleen > tmp_Colleen ; diff tmp_Colleen
Colleen.c
$> _
5
Project ALGORITHME Dr_Quine
$> ls -al
total 12
drwxr-xr-x 2 root root 4096 Feb 2 13:30 .
drwxr-xr-x 4 root root 4096 Feb 2 13:29 ..
-rw-r--r-- 1 root root 362 Feb 2 13:30 Grace.c
$> clang -Wall -Wextra -Werror -o Grace Grace.c; ./Grace ; diff Grace.c Grace_kid.c
$> ls -al
total 24
drwxr-xr-x 2 root root 4096 Feb 2 13:30 .
drwxr-xr-x 4 root root 4096 Feb 2 13:29 ..
-rwxr-xr-x 1 root root 7240 Feb 2 13:30 Grace
-rw-r--r-- 1 root root 362 Feb 2 13:30 Grace.c
-rw-r--r-- 1 root root 362 Feb 2 13:30 Grace_kid.c
$> _
6
Project ALGORITHME Dr_Quine
• Un entier est donc présent dans la source de votre programme et devra évoluer
en se décrémentant à chaque création d’un fichier source depuis l’exécution du
programme.
• Vous n’avez aucune contrainte au niveau du code source, mis à part l’entier qui
sera défini à 5 dans un premier temps.
7
Project ALGORITHME Dr_Quine
$> nl comment.c
1 /*
2 This program will print its own source when run.
3 */
$> nl macro.c
1 #include
2 #define FT(x)int main(){ /* code */ }
[..]
5 FT(xxxxxxxx)
8
Chapitre V
Partie bonus
Le seul bonus accepté en soutenance est d’avoir refait le projet intégralement dans le
langage de votre choix.
9
Chapitre VI
Rendu et peer-évaluation
• Vous devez gérer les erreurs de façon raisonnée. En aucun cas votre programme
ne doit quitter de façon inattendue (Segmentation fault, etc).
• Rendez-votre travail sur votre dépot GiT comme d’habitude. Seul le travail présent
sur votre dépot sera évalué en soutenance.
• Vous pouvez poser vos questions sur le forum, sur jabber, IRC, slack...
10