- OCaml 97.7%
- Dune 2.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| bin | ||
| doc | ||
| lib | ||
| test | ||
| .gitignore | ||
| .ocamlformat | ||
| dune-project | ||
| n_reines.bc | ||
| n_reines.opam | ||
| README.md | ||
N-reines
Introduction
Cette librairie conjointe à la partie éxécutable permettent de résoudre le {e problème des N reines}. Ce problème consiste à placer n reines sur un plateau de n*n sans qu'elles s'attaquent entre elles.
⚠️ L'usage d'un LSP est fortement recommandé pour naviguer confortablement dans le projet. Bien que les types soient indiqués dans les fichiers
.mli, le LSP permet l'affichage de ces types au-dessus des signatures de fonctions, et de voir les documentations entre les fichiers.
Objectif
L'objectif de ce projet est d'être en mesure de pouvoir déterminer et construire une ou plusieurs solutions au problème des N reines. De plus, le programme doit être en mesure de communiquer la ou les réponses à l'utilisateur et de pouvoir être embarqué dans d'autres projets en tant que librairie, indépendamment de ce que l'utilisateur veut en faire. En d'autres termes, la partie éxécutable doit pouvoir être complètement supprimé et réécrite par quelqu'un qui ne connait pas le projet sans que cela ne casse aucune fonctionnalité.
Architecture du projet
Le projet est agencé de la façon suivante:
n_reines
.
├── bin
│ ├── dune
│ └── main.ml
├── doc
│ ├── bin.mld
│ ├── dune
│ ├── index.mld
│ └── test.mld
├── dune-project
├── lib
│ ├── dune
│ ├── interaction.ml
│ ├── n_reines.ml
│ └── solver.ml
├── n_reines.opam
└── test
├── dune
└── n_reines.ml
Plusieurs sections sont distinguables:
- Le répertoire source
page-binqui contient la partie éxécutable évoqué plus haut - Le répertoire source
libqui contient la partie librairie, le moduleN_reines, divisée en différents modules, chacun avec une fonctionnalité (quasiment) indépendante de l'autre - le répertoire source
page-testqui contient les tests afin de vérifier qu'aucune fonctionnalité ne casse durant la phase de développement et de refactorisation - Un fichier
dunedans chaque répertoire qui contient toutes les informations relatives au projet. Vous pouvez les explorer, mais ils servent surtout à indiquer à Dune quoi faire et ne seront donc pas explicités ici.
Fonctionnement
Le programme peut fonctionner de deux manires:
- Mode récursif (défaut)
- Mode itératif
Chaque partie sera expliquée dans le module qui lui correspond (à voir dans module-N_reines.Solver).
Comment lancer le programme ?
Plusieurs commandes sont disponibles :
- Pour compiler le programme, vous pouvez entrer
dune build. Pour le compiler avec toutes les optimisations, vous pouvez entrerdune build @install. - Pour compiler la documentation, vous pouvez entrer
dune build @doc, et le premier fichier de la documentation sera_build/default/_doc/_html/index.html. - Pour éxécuter le fichier, vous pouvez entrer
dune exec n_reines -- [OPTIONS]. Ommettre les options n'aura aucun impact sur l'effet de la commande si ce n'est de ne pas prendre en compte l'option ommise. Bien entendu, une option--helpest disponible et est conseillée pour la premire éxécution. - Pour lancer les tests, vous pouvez entrer
dune build @runtest(malheureusement, aucun test n'est implémenté, car la documentation de Dune est écrite par les fesses et ne donne aucune indication sur comment ça marche).
Tous les artéfacts de compilation se trouveront dans le répertoire _build/.
Une version bytecode est précompilée (main.bc). Elle s'éxécutera sur toutes les plateformes.
Ce qui ne marche pas :
- les tests (si vous le souhaitez, vous pouvez les écrire vous-mêmes mais bonne chance avec la doc de Dune)
- les timings
- l'argument de commande
sols