Available nodes

Le jeu Flow (aussi appelé NumberLink) est un casse-tête dans lequel le joueur dispose d'une grille contenant des paires de points colorés de la même couleur, et doit relier ces paires de points entre elles sans provoquer de croisements de chemins, et en recouvrant l'ensemble de la grille. Ceci est un exemple non trivial de grille résolue (Source image : FlowFreeSolutions) :

  

Le but du projet consiste à permettre de modéliser le jeu, et construire des stratégies permettant de le résoudre. Plus d'informations disponibles dans le sujet détaillé. Le format de fichier suivant devra être utilisé, ceci afin de permettre de se partager les grilles entre les équipes :
  • Sur la première ligne, la hauteur h et la largeur w de la carte, donnée sous forme de nombre entier strictement positif et séparé d'un unique espace.
  • Sur les h lignes suivantes, une ligne composée de w caractères et terminée par un retour à la ligne. Chaque caractère est soit un #, soit un +, soit un chiffre [0-9], soit un caractère majuscule [A-Z].
  • En plus des lignes précédentes, il est possible de rajouter des lignes de commentaires commençant par le caractère -.
Remarques :
  • Les caractères # dans la grille représentent des cases vides.
  • Les caractères + dans la grille représentent des ponts.
  • Les caractères sur la grille dans [0-9A-Z] représentent des extrémités à relier par des chemins. Chacun de ces caractères ne peut apparaître que zéro ou deux fois dans la grille, sans quoi la celle-ci est invalide. Rien n'oblige à les utiliser dans l'ordre ou consécutivement.
Exemple :
-------------------------- 
- title  : that one is easy
--------------------------
4 4 
#1#3
#3#2
1###
2#44
Un des aspects de ce projet consiste à mettre en valeur la programmation fonctionnelle. Il est donc demandé d'utiliser au maximum ce style de programmation et de remplacer quand c'est possible les constructions impératives par un équivalent fonctionnel.
Il est possible d'utiliser des bibliothèques codées en Lisp pour faciliter certaines parties de la programmation. Pour cela, il est recommandé d'installer un gestionnaire de paquetages nommé QuickLisp. La procédure d'installation de ce gestionnaire est expliquée de manière très claire à partir du lien suivant.