(Faites défiler vers le bas pour la description de l'anglais)
Simulator du métro de Saint-Pétersbourg. * Clone de métro Yandex

Handlers / Handlers.go télécharge le fichier actifs / stations.json, reçoit des informations sur la station et les distances entre elles, puis les attache à index.tmpl, construit une colonne équilibrée non orientée dessus. HomeHandler conserve également les noms des stations et les trie par ordre alphabétique.
Stations.json Structure:
"st_g0" : {
"Name" : " Беговая " ,
"X" : 93 ,
"Y" : 140 ,
"Adj" : [ " st_g1 " ],
"Dist" : [ 4 ],
"Line" : " green " ,
"Shift" : " left " ,
"Dx" : 0 ,
"Dy" : 0
}Le nom, x, y, la ligne signifie le nom de la station, la position sur XY et la couleur de la branche, respectivement. Adj - Stations qui peuvent être chassées de cette station, Dist - Le tarif pour eux, Shift - De quel côté le texte est par rapport à X, Y. Dx, Dy - Mélangeant le texte selon X, Y.
FindRouteHandler (Handlers / Handlers.go) lit deux lignes de de, vers le formulaire index.tmpl, trouve une station appropriée (voir p. 3), trouve l'itinéraire optimal et son temps.
Le moyen le plus court consiste à utiliser l'algorithme Dijkstra / Dijkstra.go, qui accepte les nombres des stations par ordre alphabétique, renvoie le temps minimum et un tableau des nombres de stations incluses sur ce chemin.
exemple.
| Depuis | À | Meilleur itinéraire | Durée |
|---|---|---|---|
| Gênard | Canal obvodny | Gorkovskaya, Nevsky, Avenue, Sennaya, Sadovaya, Zvenigorodskaya, Obvodny Canal | 18 minutes |

ShowruteHandler (Handlers / Handlers.go) construit une carte de métro, un effet de transparence de 80% est ajouté aux côtes qui ne sont pas incluses dans l'itinéraire le plus court.
.. * utils.entoru (s) - écrase la ligne, renvoie la ligne par des lettres anglaises remplacées chez les Russes qui sont sur les mêmes pinces de clavier.
.. * getIDX (S) - Renvoie le plus "similaire" à la ligne de tous les noms des stations. La ligne S1 ressemble plus à une ligne S que la S2 si la distance de Levenstein (utils.editDistance ()) entre S1 et S inférieure à S2 et S.
Saint-Pétersbourg Simulator de métro. * Clone de métro Yandex

Handlers / Handlers.go) charge Assstes / stations.json Fichier Witch décrit les stations, construit des graphiques d'états et les distances entre eux et les dessiner. HomeHandler enregistre également les noms des stations et les trier dans l'ordre alphabétique.
Stations.json Structure:
"st_g0" : {
"Name" : " Беговая " ,
"X" : 93 ,
"Y" : 140 ,
"Adj" : [ " st_g1 " ],
"Dist" : [ 4 ],
"Line" : " green " ,
"Shift" : " left " ,
"Dx" : 0 ,
"Dy" : 0
}Le nom, x, y, la ligne signifie nom de station, position xy et couleur de la branche respectivement. Adj est une gamme d'états se connectant à celui-ci. Dist - Il est temps de les atteindre, Shift - Side Offeet du texte. DX, Dy - Shift de texte par X et Y.
FindRouteHandler (Handlers / Handlers.go) lit deux chaînes "de", "à" à partir du formulaire dans la page index.tmpl, trouvez la station que vous maan (p.3) et, enfin, seearsch le meilleur itinéraire entre et vers.
L'algorithme Dijkstra (Dijkstra / Dijkstra.go) renvoie le chemin le plus court entre deux nœuds.

ShowruteHandler (Handlers / Handlers.go) construit la carte du métro. Les bords qui ne sont pas dans le chemin le plus court ne sont pas transparents.
GetIDX (S) - Renvoie le nom des stations les plus similaires à S. La similitude entre la chaîne S et la chaîne T est la distance de Levenshtein de S à T. La distance de Levenshtein est une métrique de chaîne pour mesurer la différence entre deux chaînes.