(Scrollen Sie nach unten für die englische Beschreibung)
Simulator der St. Petersburg Metro. *Yandex Metro -Klon

Handler/Handler. HomeHandler behält auch die Namen der Stationen bei und sortiert sie alphabetisch.
Stationen.json Struktur:
"st_g0" : {
"Name" : " Беговая " ,
"X" : 93 ,
"Y" : 140 ,
"Adj" : [ " st_g1 " ],
"Dist" : [ 4 ],
"Line" : " green " ,
"Shift" : " left " ,
"Dx" : 0 ,
"Dy" : 0
}Name, x, y, Zeile bedeutet den Namen der Station, die Position auf XY bzw. die Farbe des Zweigs. Adj - Stationen, die von dieser Station gesteuert werden können, dist - die Fahrpreis für sie, Verschiebung - auf welcher Seite ist der Text relativ zu X, Y. DX, DY - Mischung des Textes nach X, Y.
FindRouteHandler (Handler/Handler.Go) liest zwei Zeilen von aus dem Index.tmpl -Formular, findet eine geeignete Station (siehe S. 3) und findet die optimale Route und ihre Zeit.
Der kürzeste Weg besteht darin, den Dijkstra/Dijkstra.go -Algorithmus zu verwenden, der die Anzahl der Stationen in alphabetischer Reihenfolge akzeptiert, die Mindestzeit und ein Array aus der Anzahl der auf diesem Pfad enthaltenen Stationen zurückgibt.
Beispiel.
| Aus | Zu | Beste Route | Dauer |
|---|---|---|---|
| Gorky | Offener Kanal | Gorkovskaya, Nevsky, Avenue, Sennaya, Sadovaya, Zvenigorodskaya, Offener Kanal | 18 Minuten |

ShowRuteHandler (Handler/Handler.Go) baut eine U -Bahn -Karte, und die Rippen, die nicht in der kürzesten Route enthalten sind, wird ein 80%iger Transparenzeffekt hinzugefügt.
..* utils.entoru (s) - zerquetscht die Linie und gibt die Linie mit ersetzten englischen Buchstaben in Russen zurück, die sich auf denselben Tastaturklemmen befinden.
..* getIdx (s) - Gibt die "ähnlichste" der S -Zeile aller Namen der Stationen zurück. Die S1 -Linie ähnelt eher einer Linie S als der S2, wenn der Abstand von Levenstein (utils.editDistance ()) zwischen S1 und S weniger als zwischen S2 und S.
Saint Petersburg U -Bahn -Simulator. *Yandex Metro -Klon

Handler/Handler.go) lädt Assstes/Stationen.json -Datei Hexe beschreibt Stationen, erstellt Grafiken von Zuständen und Entfernungen zwischen ihnen und zeichnen. Auch HomeHandler speichert Stationen Namen und sortiert sie in alphabetischer Reihenfolge.
Stationen.json Struktur:
"st_g0" : {
"Name" : " Беговая " ,
"X" : 93 ,
"Y" : 140 ,
"Adj" : [ " st_g1 " ],
"Dist" : [ 4 ],
"Line" : " green " ,
"Shift" : " left " ,
"Dx" : 0 ,
"Dy" : 0
}Name, x, y, Linie steht für den Stationsnamen, die XY -Position und die Farbe des Zweigs. Adj ist eine Reihe von Zuständen, die sich mit diesem verbinden. Dist - Zeit, um sie zu erreichen, verschieben - Offseet -Seite des Textes. DX, DY - Textverschiebung durch X und Y.
FindrouteHandler (Handler/Handler.go) liest zwei Zeichenfolge "von", "zu" aus dem Formular in Index.tmpl Seite, Suchen Sie die Station, die Sie Maan (S. 3) und schließlich die beste Route zwischen und nach.
Dijkstra -Algorithmus (Dijkstra/Dijkstra.go) RECHTEN SIE DEN KANDESTEN STANDEN IN DER ZWEI GODES.

ShowRuteHandler (Handler/Handler.Go) Builds U -Bahn -Karte. Kanten werden nicht in kürzester Pfad sind, sind transparent.
GetIdx (s) - Gibt den ähnlichsten Stationen -Namen zu s zurück. Die Ähnlichkeit zwischen String S und String T ist der Levenshtein -Abstand von S zu T. Levenshtein Distanz ist eine Stringmetrik zur Messung der Differenz zwischen zwei String.