Skip to content

Commit

Permalink
docs: add diary
Browse files Browse the repository at this point in the history
  • Loading branch information
VincentHardouin committed Mar 16, 2024
1 parent 764ad68 commit 3f128c4
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 1 deletion.
2 changes: 1 addition & 1 deletion docs/TODO.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
- [ ] UX - Afficher les lignes de métro dans la bonne couleur
- [ ] Ajouter un cout de changement de ligne sur le script de Dijkstra
- [ ] UX - Map - Améliorer le responsive : se baser sur la hauteur de fenêtre aussi
- [ ] UX - Ajouter les stations du joueur en dessous de la carte
Expand All @@ -9,6 +8,7 @@
- [ ] Mode de Jeu - Ajouter un mode par temps entre stations
- [ ] UX - Pouvoir activer/désactiver des stations
- [ ] Script - Merge-duplicate-station - Ne pas prendre compte les tirets dans les noms : "Reuilly - Diderot" et "Reuilly — Diderot
- [X] UX - Afficher les lignes de métro dans la bonne couleur
- [x] UX - Modale de fin - Ajouter le chemin le plus court et le chemin du joueur
- [x] UX - Search Input - Ajouter un feedback si la station n'existe pas
- [x] UX - Search Input - Retirer les stations déjà ajoutées
Expand Down
101 changes: 101 additions & 0 deletions docs/diary/2024-03-13.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# 2024-03-13

Je n'ai pas fait de note hier, mais il a fallu résoudre un bug sur la modale de fin.
Je ne passais plus les bons paramètres à la fonction qui vérifie si les stations sont reliées entre elles.
Plus de tests, ça aurait pu être bien ou TS, mais bon …

Aujourd'hui, je vais m'attaquer au fait d'afficher les lignes de métro dans la bonne couleur.
Je tombe sur [cette page wikipédia](https://fr.wikipedia.org/wiki/Mod%C3%A8le:M%C3%A9tro_de_Paris/couleur_fond),
la source est vraiment sympa, j'aime bien ce genre de document.

Est-ce que j'ajoute l'info dans json des lignes ? Cela a pour conséquence de modifier le script `extract-lines`
pour qu'il ajoute les couleurs.
Sinon j'ajoute l'info dans la class map qui gère ça. La deuxième solution me paraît suffisante.

J'ajoute la liste de couleur, je change une ligne de code et ça fonctionne, j'aime beaucoup. J'envoie direct en prod.

Dans la todo, le prochain sujet, c'est le cout de changement de ligne dans l'algo de Dijkstra. C'est parti !

Créons un jeu de test, j'imagine un par exemple de prendre la 13 qui passe par Saint-Lazare, et remonter jusqu'à Brochant.
Si on part de Saint-Lazare, on peut prendre la 13 ou la 14 puis 13.
En prenant la 13 ça donne :

- Saint-Lazare
- Liège
- Place de Clichy
- La Fourche
- Brochant

En prenant la 14 puis 13 ça donne :

- Saint-Lazare
- Pont Cardinet
- Porte de Clichy
- Brochant

Donc admettons que je vienne de Miromesnil, dans les deux cas je suis dans la 13, puis l'algo actuel me dirait de prendre la 14, puis re 13.
Ce qui donne :
En prenant la 13 ça donne 6 stations :

- 13 - Miromesnil
- 13 - Saint-Lazare
- 13 - Liège
- 13 - Place de Clichy
- 13 - La Fourche
- 13 - Brochant

En prenant la 14 puis 13 ça donne 5 stations :

- 13 - Miromesnil
- 13->14 - Saint-Lazare
- 14 - Pont Cardinet
- 14->13 - Porte de Clichy
- 13 Brochant

Voilà mon jeu de test.

Ensuite, comment faire, je pense qu'à la création du graph, au lieu de simplement retourner la distance pour la station adjacente,
je peux aussi ajouter la ligne. Ensuite au moment, où l'algo calcule les nodes suivants, si la ligne est différente,
alors j'ajoute un cout de 1 par exemple.

Le code écrit est mine de rien un peu compliqué, je demande à ChatGPT de le passer en TS, ça sera plus simple pour changer les signatures.
Il m'a très bien fait ça, maintenant, j'ajoute mon intuition.

J'hésite pour l'argument de `computeSmallestStationsPath` entre un cout de changement de ligne (un nombre)
ou juste un booléen qui active ou non cette feature.
Comme ça, rapidement, je ne vois pas de cas où je voudrais un cout différent de X, donc je vais partir sur un booléen.

D'ailleurs ce coût est-ce qu'il est bien de 1 ?

L'exemple de mon test d'au-dessus est intéressant :

On est à "Notre-Dame de Lorette" et on veut aller à "Brochant".
Notre-Dame de Lorette est sur la 12, et Brochant est sur la 13.
Le plus naturel serait de faire un changement de ligne de 12->13 à Saint-Lazare, mais avec un coût de 0 ou de 1 l'algo retourne toujours :

```
"Notre-Dame de Lorette",
"Trinité d'Estienne d'Orves",
"Saint-Lazare",
"Pont Cardinet",
"Porte de Clichy",
"Brochant",
```

VS

```
"Notre-Dame de Lorette",
"Trinité d'Estienne d'Orves",
"Saint-Lazare",
"Liège",
"Place de Clichy",
"La Fourche",
"Brochant",
```

Cout total : 7 vs 7, mais l'algorithme retourne toujours le premier.

Si je prends un cout de 2, alors l'algo retourne le deuxième chemin, car j'obtiens : 8 pour 12->13 vs 9 pour 12->14->13.

Je vais me renseigner sur comment fonctionne les algos de CityMapper, ou autres.

0 comments on commit 3f128c4

Please sign in to comment.