le samedi 2 décembre
ICPF Contest 2006
Un de mes amis m'a proposé de tester mes compétences en tentant le concours 2006 de l'International Conference on Functional Programming. Il s'agit d'un concours de programation.
D'après les échos que j'en ai eu, ce concours est particulièrement original puisque le jeu ne consiste pas à répondre à quelques questions éparses sur différents thèmes, mais de jouer à l'archéologue.
Le thème de l'épreuve : il y quelques années, on a retrouvé une spécification de machine universelle datant de plus de 2000 ans, ainsi qu'un mystérieux codex devant s'exécuter sur cette machine. Et rien d'autre.
Alors évidemment, l'exécution du codex fait apparaitre différentes inscriptions à l'écran, qu'il convient de lire avec beaucoup d'attention. Pour ma part, j'ai implémenté cette machine virtuelle en python (uminpy) et en C (uminc). La raison étant que la version python est bien trop trop lente pour pouvoir être raisonnablement utilisé. Le ratio de gain est largement supérieur à 60. D'un autre coté, la version python a été beaucoup plus facile à écrire, et de ce fait m'a permis d'avoir une version fonctionnelle, à partir de laquelle j'ai bâtit plusieurs outils de debug pour corriger les erreurs de la version C simplement.
Le seul problème que je n'ai pas encore corrigé est une fuite de mémoire. Je pense savoir où se trouve le probleme. La machine de référence (à 1Ghz) décode le codex en 1min et 40 secondes. Avec mon Sempron 2800+ à 2 Ghz, je mets environ 40 secondes, ce qui me fait dire que j'ai une implémentation très correcte de la machine virtuelle.
