(英語の説明のために下にスクロールしてください)
サンクトペテルブルク大都市のシミュレーター。 *Yandex Metroクローン

Handlers/Handlers.go Assets/Stations.jsonファイルをダウンロードし、ステーション間の情報と距離に関する情報を受信し、それらをindex.tmplに留め、指向のバランスの取れた列を構築します。 HomeHandlerはまた、ステーションの名前を保持し、アルファベット順にソートします。
stations.json構造:
"st_g0" : {
"Name" : " Беговая " ,
"X" : 93 ,
"Y" : 140 ,
"Adj" : [ " st_g1 " ],
"Dist" : [ 4 ],
"Line" : " green " ,
"Shift" : " left " ,
"Dx" : 0 ,
"Dy" : 0
}名前、x、y、行とは、ステーションの名前、xyの位置、それぞれブランチの色を意味します。 adj-このステーションから駆動できるステーション、それらへの運賃、シフト - その側はx、y。dx、dyに対するテキストです - x、yに従ってテキストを混合します。
FindRouteHandler(Handlers/Handlers.go)は、fromからindex.tmplフォームから2行を読み取り、適切なステーションを見つけ(p。3を参照)、最適なルートとその時間を見つけます。
最短の方法は、アルファベット順にステーションの数を受け入れるDijkstra/Dijkstra.goアルゴリズムを使用することです。このパスに含まれるステーションの数から最小時間と配列を返します。
例。
| から | に | 最高のルート | 間隔 |
|---|---|---|---|
| ゴーキー | オブリスニーチャンネル | Gorkovskaya、Nevsky、Avenue、Sennaya、Sadovaya、Zvenigorodskaya、Obsodny Canal | 18分 |

ShowruteHandler(Handlers/Handlers.go)メトロカードを構築し、最短ルートに含まれていないリブに80%の透明性効果が追加されます。
..* utils.entoru(s) - ラインを押しつぶし、同じキーボードクランプにいるロシア人の交換された英語の文字でラインを返します。
..* getIdx(s) - ステーションのすべての名前のSラインに最も「同様」を返します。 S1ラインは、S2とSの間のS1とSの間のS1とSの間の距離(UTILS.EDITDISTANCE())の距離がS2よりもS2よりもラインSに似ています。
セントピーターズバーグ地下鉄シミュレーター。 *Yandex Metroクローン

handlers/handlers.go)assstes/stations.jsonファイルwitchはステーションを説明し、状態とそれらの間の距離を構築して描画して描画します。また、HomeHandlerはステーションの名前を保存し、アルファベット順に並べ替えます。
stations.json構造:
"st_g0" : {
"Name" : " Беговая " ,
"X" : 93 ,
"Y" : 140 ,
"Adj" : [ " st_g1 " ],
"Dist" : [ 4 ],
"Line" : " green " ,
"Shift" : " left " ,
"Dx" : 0 ,
"Dy" : 0
}名前、x、y、ラインは、それぞれ枝のxy位置と枝の色を表します。 adjは、これに接続する状態の配列です。それらに到達する時間、シフト - テキストのオフセート側。 dx、dy- xおよびyによるテキストシフト。
findRouteHandler(Handlers/Handlers.go)は、index.tmplページのフォームから「from」、「」から2つの文字列を読み取ります。
Dijkstraアルゴリズム(Dijkstra/Dijkstra.go)2つのノード間の最短パスを返します。

ShowruteHandler(Handlers/Handlers.go)は、地下鉄のマップを構築します。エッジは、透明な最短経路にありません。
getIdx(s) - 最も類似したステーション名をsに返します。文字列Sと文字列Tの類似性は、sからTまでのlevenshtein距離です。2つの文字列間の違いを測定するためのlevenshtein距離は、文字列メトリックです。