Commit de2bedb3 authored by Iovka Boneva's avatar Iovka Boneva
Browse files

Merge branch 'master' into dev:

parents ecf67dea 3e10448d
No preview for this file type
......@@ -32,8 +32,8 @@ edges:
On doit spécifier:
- `type:` le type de graphe, obligatoire. Les valeurs valides sont celles énumérées plus haut.
- `name:` un nom pour le graphe, obligatoire. C'est n'importe quelle chaine de caractères sans espaces.
- `nodes:` l'ensemble des sommets du graphe, obligatoire. Chaque sommet est une chaine de caractères sans espaces et les sommets sont énumérés entre crochets, séparés par des virgules.
- `name:` un nom pour le graphe, obligatoire. C'est une chaine de caractères sans espaces.
- `nodes:` l'ensemble des sommets du graphe, obligatoire. Chaque sommet est une chaine de caractères sans espaces, qui commence par un caractère alphabétique. Les sommets sont énumérés entre crochets, séparés par des virgules.
- `edges:` les arêtes par liste d'adjacence, obligatoire. On doit énumérer tous les sommets, et pour chaque sommet on énumère ses successeurs entre crochets.
Éléments de syntaxe importants:
......@@ -70,6 +70,7 @@ Par exemple l'arête entre `a` et `c` est donnée dans la liste des successeurs
### Graphe valué (`uwgraph` ou `diwgraph`)
Pour les arêtes, en plus des successeurs il faut donner le poids pour chaque arête.
De ce fait la liste des successeurs est donnée par une liste d'associations (entre *accolades*), et utilise un mot clé différent: **wedges:**
......@@ -100,7 +101,7 @@ Naturellement, un graphe non orienté et valué est représenté de manière sim
Éléments de YAML
---
Voici quelques informations sur la partie de YAML utilisée pour représenter les graphes.
Voici quelques informations sur la partie de YAML utilisée pour représenter les graphes, et qui pourraient aider à comprendre les contraintes syntaxiques liées à la représentation des graphes.
YAML permet de représenter des associations de clé-valeur.
Chaque ligne contient une clé suivie immédiatement de deux points, suivie d'une valeur pour la clé.
......
......@@ -43,7 +43,7 @@ type: uwgraph
name: livraison
descr: "Villes et réseau routier"
nodes: [a,b,c,d,e,f,g,h,i,j]
edges:
wedges:
a: {b: 11, d: 2}
b: {c: 4, d: 7, e: 2, g: 3}
c: {}
......
......@@ -54,24 +54,28 @@ Par exemple `load --help` affiche l'aide de la commande `load`.
Charge un graphe depuis un fichier.
- `list` <br>
Affiche la liste des graphes déjà chargés et des résultats déjà calculés sur ces graphes.
- `draw` <br>
Produit un fichier image contenant le dessin d'un graphe ou d'un résultat.
- `exit` <br>
Quitte le programme. Les graphes chargés et résultats calculés sont perdus (pas de sauvegarde de session).
- `shortest-path` <br>
Exécute un algorithme de recherche de plus court chemin et stocke le résultat de l'algorithme (table des prédécesseurs, table des distances).
- `optimal-path` <br>
Exécute un algorithme de recherche de chemin optimal, càd un chemin minimal ou maximal, et stocke le résultat de l'algorithme (table des prédécesseurs, table des distances).
- `traversal`<br>
Exécute un algorithme de parcours et stocke le résultat (arêtes visitées et ordre de parcours).
- `maximum-flow` <br>
Exécute un algorithme de recherche de flot maximal et stocke le résultat (valeur du flot et fonction de flot).
- `draw` <br>
Produit un fichier image contenant le dessin d'un graphe ou d'un résultat.
- `find-path` <br>
Effectue une recherche de chemin dans un arbre qui est le résultat d'un parcours ou d'un plus court chemin, ou d'un chemin optimal.
- `gen-yaml` <br>
Produit un graphe sans arêtes à partir d'une liste de sommets. À être utilisé comme trame pour la définition d'un graphe au format GrappYAML.
- `exit` <br>
Quitte le programme. Les graphes chargés et résultats calculés sont perdus (pas de sauvegarde de session).
Génère un fichier yaml qui contient une trame pour un graphe, à partir du type du graphe et de la liste de ses sommets.
### Options
Toutes les commandes exécutant un algorithme (shortest-path, traversal, maximum-flow) acceptent ces deux options:
Toutes les commandes exécutant un algorithme (shortest-path, optimal-path, traversal, maximum-flow) acceptent ces deux options:
- `-csv <NOM_FICHIER>` <br>
Écrit le tableau des résultats au format CSV dans le fichier donné. L'écriture se fait en concaténation.
- `-silent` <br>
N'affiche pas le résultat sur la console.
\ No newline at end of file
N'affiche pas le résultat sur la console.
......@@ -43,6 +43,7 @@ import java.lang.ClassCastException
import java.net.URL
import java.net.URLClassLoader
import fr.ulille.grapp.ui.OutputFormatting.format
import java.util.regex.Pattern
/** Runs the application in REPL mode. */
object Grapp {
......@@ -78,7 +79,7 @@ object Grapp {
if (line == null || line.trim() == "exit") break
line = line.trim()
try {
MainCommand.parse(line.split(" "))
MainCommand.parse(line.split(Regex("\\s+")))
} catch (e: GrappError) {
MainCommand.myEcho(e.message, err=true)
} catch (e: ProgramResult) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment