(Role para baixo para descrição em inglês)
Simulador do metrô de São Petersburgo. *Clone do metrô Yandex

Manipuladores/manipuladores.go baixam o arquivo Assets/Stations.json, recebe informações sobre a estação e as distâncias entre eles e depois os prende para index.tmpl, cria uma coluna equilibrada não orientada. O Home Mandler também mantém os nomes das estações e os classifica em ordem alfabética.
Estações.json Estrutura:
"st_g0" : {
"Name" : " Беговая " ,
"X" : 93 ,
"Y" : 140 ,
"Adj" : [ " st_g1 " ],
"Dist" : [ 4 ],
"Line" : " green " ,
"Shift" : " left " ,
"Dx" : 0 ,
"Dy" : 0
}Nome, x, y, linha significa o nome da estação, a posição no XY e a cor do ramo, respectivamente. ADJ - Estações que podem ser dirigidas a partir desta estação, dist - a tarifa para eles, Shift - de que lado é o texto em relação a X, Y. DX, Dy - misturando o texto de acordo com X, Y.
O FindRouteHandler (manipuladores/manipuladores.go) lê duas linhas de de, a partir do formulário index.tmpl, encontra uma estação adequada (ver p. 3), encontra a rota ideal e seu tempo.
A maneira mais curta é usar o algoritmo dijkstra/dijkstra.go, que aceita o número de estações em ordem alfabética, retorna o tempo mínimo e uma matriz do número de estações incluídas nesse caminho.
exemplo.
| De | Para | Melhor rota | Duração |
|---|---|---|---|
| Gorky | Canal obviodny | Gorkovskaya, Nevsky, Avenue, Sennaya, Sadovaya, Zvenigorodskaya, Canal de Observação | 18 minutos |

O ShowRuteHandler (manipuladores/manipuladores.go) constrói uma placa de metrô, um efeito de transparência de 80%é adicionado às costelas que não estão incluídas na rota mais curta.
..* utils.entoru (s) - esmaga a linha, retorna a linha com letras inglesas substituídas em russos que estão nos mesmos grampos de teclado.
..* getidx (s) - retorna a linha mais "semelhante" à S de todos os nomes das estações. A linha S1 é mais parecida com a linha S do que a S2 se a distância de LevenStein (utils.editdistance ()) entre S1 e S menor que entre S2 e S.
Saint Petersburg Subway Simulator. *Clone do metrô Yandex

Manipuladores/manipuladores.go) Carrega Assstes/Stations.json File Witch está descrevendo estações, constrói gráficos de estados e distâncias entre eles e desenham. Também criador de casa salva nomes das estações e os classifica em ordem alfabética.
Estações.json Estrutura:
"st_g0" : {
"Name" : " Беговая " ,
"X" : 93 ,
"Y" : 140 ,
"Adj" : [ " st_g1 " ],
"Dist" : [ 4 ],
"Line" : " green " ,
"Shift" : " left " ,
"Dx" : 0 ,
"Dy" : 0
}Nome, x, y, linha significa nome da estação, posição XY e cor da filial, respectivamente. Adj é uma matriz de estados que se conectam com este. DIST - Tempo para alcançá -los, deslocamento - lado offseet do texto. DX, Dy - Mudança de texto por x e y.
FindRouteHandler (manipuladores/manipuladores.go) lê duas string "de", "para" do formulário em index.tmpl página, encontre a estação que você maan (p.3) e, finalmente, searsch a melhor rota entre e para.
O algoritmo Dijkstra (dijkstra/dijkstra.go) retorna o caminho mais curto entre dois nós.

ShowRuteHandler (manipuladores/manipuladores.go) cria mapa do metrô. As bordas que não estão no caminho mais curto são transparentes.
Getidx (s) - Retorna o nome mais semelhante a estações para s. A similaridade entre as cordas S e a String T é a distância levenShtein de S para T. Levenshtein Distância é uma métrica de cordas para medir a diferença entre duas cordas.