Voir LICENSE pour plus de détails.
Voici le sujet initial.
Ce dossier contient les fichiers ocaml source (.ml) suivants :
resolution.ml Il s'agit de la librairie de résolution du puzzle demandée.
interface.ml Il s'agit de la libraire d'interface graphique demandée, réalisée en utilisant Graphics et Zenity (GTK).
interface_utilisateur.ml Il s'agit de l'interface graphique. Lance seulement une procédure du module 'interface.ml'. (non documentée : rien à dire)
create_instance.ml Un tout petit programme pour générer une instance aléatoire, de façon intéractive en utilisant zenity. (non documentée en .mli : rien à dire)
create_instance_sol.ml Un tout petit programme pour générer une instance aléatoire ayant une solution, de façon intéractive en utilisant zenity. (non documentée en .mli : rien à dire)
temps.ml Un tout petit module pour chronométrer le temps mis pour les résolutions. Une fois une résolution finie dans l'interface graphique, un message informatif précise le temps mis par Ocaml pour résoudre. Attention : n'est pas du tout égal au temps mis pas l'ordinateur à répondre. Mais ça donne un ordre de grandeur de toutes manières.
Ce dossier contient les fichiers ocaml signature (.mli) suivants :
sig_resolution.mli Il s'agit de la librairie de résolution du puzzle demandée.
sig_interface.mli Il s'agit de l'interface graphique demandée, réalisée en utilisant Graphics et Zenity (GTK).
Ce dossier contient les fichiers de documentations obtenus avec OcamlDoc (page principale : Doc/documentation.html).
Ce dossier contient un fichier Makefile pour compiler le projet sur une architecture Linux classique, avec ocamlc et ocamlopt.
Il faut une version complète d'ocaml (3.12.0 ou +) installée, pour compiler soit-même et pour exécuter le code produit ("projet").
Les outils libres et gratuitement disponibles suivants sont aussi nécessaires au bon fonctionnement de l'exécutable :
Normalement, le fichier Makefile présent dans le dossier permet de compiler le projet, en faisant simplement "make" dans un terminal (testé seulement sous Linux).
Ma procédure de résolution porte le doux nom de "resolution_naive" car elle n'est aucunement optimisée. Ainsi, tant qu'aucun progrès n'aura été fait sur ce plan là, il est inutile de lancer la résolution pour une instance avec plus d'une dizaine de pièces ! (J'ai testé jusqu'à 4x4 seulement). A noter que plus 'c' est grand, plus la résolution est rapide pour une instance aléatoire. Si vous voulez faire des tests, choisissez plutôt c plus grand que 10.
Durant la résolution, le seul moyen d'interrompre le travail du programme est de le fermer brutalement !
(C) 2012-2014 Lilian Besson, sous licence GPLv3 (http://besson.qc.to/LICENSE.html)