(Desplácese hacia abajo por la descripción del inglés)
Simulador del metro de San Petersburgo. *Clon de metro yandex

Handlers/Handlers.go descarga el archivo de activos/stations.json, recibe información sobre la estación y las distancias entre ellos, luego los fijan a index.tmpl, construye una columna equilibrada no orientada en ella. Homehandler también conserva los nombres de las estaciones y las clasifica alfabéticamente.
Estaciones. Estructura json:
"st_g0" : {
"Name" : " Беговая " ,
"X" : 93 ,
"Y" : 140 ,
"Adj" : [ " st_g1 " ],
"Dist" : [ 4 ],
"Line" : " green " ,
"Shift" : " left " ,
"Dx" : 0 ,
"Dy" : 0
}Nombre, x, y, línea significa el nombre de la estación, la posición en xy y el color de la rama, respectivamente. Adj - estaciones que se pueden conducir desde esta estación, Dist - la tarifa para ellos, el cambio - en qué lado está el texto relativo a X, Y. DX, Dy - Mezcla el texto según X, Y.
FindrouteHandler (Handlers/Handlers.go) lee dos líneas desde, desde el formulario index.tmpl, encuentra una estación adecuada (ver p. 3), encuentra la ruta óptima y su tiempo.
La forma más corta es usar el algoritmo Dijkstra/Dijksstra.go, que acepta los números de las estaciones en orden alfabético, devuelve el tiempo mínimo y una matriz de los números de estaciones que se incluyen en esta ruta.
ejemplo.
| De | A | Mejor ruta | Duración |
|---|---|---|---|
| Gorky | Canal obvio | Gorkovskaya, Nevsky, Avenue, Sennaya, Sadovaya, Zvenigorodskaya, Canal Obvodny | 18 minutos |

ShowruteHandler (Handlers/Handlers.go) construye una tarjeta de metro, se agrega un efecto de transparencia del 80%a las costillas que no están incluidas en la ruta más corta.
..* Utilss.entoru (s) - aplasta la línea, devuelve la línea con letras inglesas reemplazadas en rusos que están en las mismas abrazaderas de teclado.
..* getIdx (s) - Devuelve la línea más "similar" a S de todos los nombres de las estaciones. La línea S1 es más como una línea S que la S2 si la distancia de Levenstein (utils.EditDistance ()) entre S1 y S menor que entre S2 y S.
Simulador del metro de San Petersburgo. *Clon de metro yandex

Handlers/Handlers.go) Carga Assstes/Stations.json File Witch está describiendo estaciones, construye gráficos de estados y distancias entre ellos y dibujándolo. También Homehandler guarda los nombres de las estaciones y los ordena en orden alfabético.
Estaciones. Estructura json:
"st_g0" : {
"Name" : " Беговая " ,
"X" : 93 ,
"Y" : 140 ,
"Adj" : [ " st_g1 " ],
"Dist" : [ 4 ],
"Line" : " green " ,
"Shift" : " left " ,
"Dx" : 0 ,
"Dy" : 0
}Nombre, x, y, line significa nombre de estación, posición xy y color de rama respectivamente. Adj es la matriz de estados que se conectan con este. Dist: tiempo para alcanzarlos, desplazar el lado de la sepeta del texto. DX, DY - Cambio de texto de X e Y.
FindrouteHandler (Handlers/Handlers.go) lee dos cadenas "de", "a" desde el formulario en la página index.tmpl, encuentre la estación que maan (p.3) y, finalmente, searsch la mejor ruta entre y a.
Algoritmo Dijkstra (Dijkstra/Dijkstra.go) Devuelve la ruta más corta entre dos nodos.

Showrutehandler (manejadores/manejadores.go) construye el mapa del metro. Los bordes que no están en la ruta más corta arewing transparente.
GetIdx (s): devuelve el nombre de estaciones más similar a s. La similitud entre la cadena S y la cadena T es la distancia de Levenshtein de S a la distancia de T. Levenshtein es una métrica de cadena para medir la diferencia entre dos cadenas.