Un pote me montre ce concours d'informatique. Je n'en avais jamais fait mais je décide de relever le défi pour le fun car le concours est terminé.
Après quelques hésitations dans la compréhension du sujet, je me lance dans l'écriture en PHP d'un parser pour essayer de voir ce que ce petit programme à déchiffrer (codex) faisait. Quelle naïvité ! Ce programme n'avait rien de petit, c'est un concours de haut niveau.
Je commence donc à développer la machine virtuelle en C car c'est le langage que je maitrise le
mieux. C'est assez simple mais j'ai commis quelques petites erreurs bêtes :
- dans LoadProg, j'effaçais le programme dans certains cas
- je gérais mal le pointeur d'instruction (visible après un LoadProg)
- dans Alloc, j'ai fait un mauvais copier-coller
- je ne lisais pas le fichier source jusqu'au bout
- dans Input, je n'utilisais pas la bonne fonction de lecture clavier
Finalement, ma VM tourne correctement mais est assez lente. Des optimisations seront nécessaires mais je ne sais pas trop lesquelles, j'ai trouvé quelques idées sur le net. Certains ont même implémenté un compilateur "Just-In Time" : assez compliqué...
L'exécution du codex de 2Mo permet de décompresser, à l'aide d'une clé, un nouveau programme de 15Mo ! Celui-ci simule rien de moins qu'un OS où l'on doit se loguer et taper des commandes de type unix. On accède donc à plusieurs puzzles géants que l'on doit résoudre pour gagner des points.
On peut se demander comment les concepteurs ont réalisé un concours aussi malicieux qu'innovant (le décodage d'un mystérieux programme extra-terrestre). Je pense qu'ils ont d'abord développé un compilateur qui génère du code "alien" puis le programme des puzzles et enfin l'algorithme de compression.
C'est la première étape et l'obtention des premiers points (voir les solutions). La lecture d'un mail venu de l'espace nous pose la première tâche : hacker les mots de passe des utilisateurs de ce système en utilisant et améliorant un programme en langage BASIC. C'est facile et donne 2 mots de passe en recherche simple et 1 en recherche étendue. Total : 225pts
Au début, on se dit chouette un jeu d'aventure en mode texte comme au bon vieux temps, mais non c'est un concours d'informatique, ca aurait été trop simple... On découvre un problème à base de piles et de dépendances. Je n'ai pas encore réussi à le modéliser pour le résoudre. Total : 30pts
Il faut créer des programmes dans un langage "2D" dessiné en ASCII.
L'exécutable icfp.exe permet d'obtenir 3 comptes administrateurs à condition d'avoir un score suffisant (1006, 2006 et 3006). A priori, il n'y a rien d'autres à faire ici. Total : 100pts
Il semble s'agir d'un langage formel...
Il semble falloir créer des programmes dans un langage dit "équilibré".
Mot de passe inconnu
Mot de passe inconnu
Score total : 355 points
Auteur : Tony - commencé le 23/10/06 - maj le 21/11/06