-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
764ad68
commit 3f128c4
Showing
2 changed files
with
102 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |