Trouver son chemin LDVELH

, par MiKaël Navarro

Pour commencer un petit programme ldvelh-graphviz.py permettant d’afficher le diagramme de dépendance des numéros d’un livre dont vous êtes le héros.

Vopyons comment fonctionne l’outil sur le livre-jeu l’homme qui goûtait à ses propres Macédoines...

Tout d’abord il faut créer un fichier macedoines.py contenant les relations entre les numéros / chapitres :

NODES = { 0: { 'name': "L'homme qui goutait a ses propres Macedoines",
               'description': "Une aventure pour illustrer le concept de linearite des livres-jeux." },
         }
EDGES = {
   1: [3, 7],
   2: [6, 12],
   3: [4, 6, 11],
   4: [2, 12],
   6: [12],
   7: [8, 9],
   8: [10],
   9: [10],
   10: [5],
   11: [4, 12],
   }

On peut alors afficher le graphe :

$ python ldvelh-graphviz.py --graph macedoines --graphviz macedoines.dot
Writing 'macedoines.dot'...
$ dot -Tpng -o macedoines.png macedoines.dot

Ensuite, on peut exploiter ce graphe afin de trouver les chemins du numéro 1 jusqu’au numéro 12 par exemple :

$ python ldvelh-graphviz.py --graph macedoines --start 1 --end 12 --first
find_first_path:
[1, 3, 4, 2, 6, 12] (6)
0.000131762555929 s

$ python ldvelh-graphviz.py --graph macedoines --start 1 --end 12 --shortest
find_shortest_path:
[1, 3, 4, 12] (4)
0.000152619442922 s

$ python ldvelh-graphviz.py --graph macedoines --start 1 --end 12 --all
find_all_paths:
[[1, 3, 4, 2, 6, 12], [1, 3, 4, 2, 12], [1, 3, 4, 12], [1, 3, 6, 12], [1, 3, 11, 4, 2, 6, 12], [1, 3, 11, 4, 2, 12], [1, 3, 11, 4, 12], [1, 3, 11, 12]] (8)
0.000183739242564 s

Cf. python ldvelh-graphviz.py --help pour l’aide.

P.-S.

D’autres outils pour nous aider à déterminer les relations entre les numéros / chapitres :

  • ldvelh-get_deps-html.py permet d’affichir les relations à partir d’un fichier html (produit par pdftohtml, nettoyé pour ne contenir que les numéros de chapitres).
  • ldvelh-get_deps-rst.py quand à lui prend comme source un fichier reStruturedText avec sections / references représentant le LDVELH.
  • Enfin un petit script ldvelh-extract.sh qui aide à extraire le texte des paragraphes au format reStructuredText (à coup de *regexp*) à partir du même fichier html (sortie du programme pdftohtml).