(영어 설명을 위해 아래로 스크롤)
상트 페테르부르크 지하철의 시뮬레이터. *Yandex Metro 클론

핸들러/핸들러 .go 자산/스테이션 .json 파일을 다운로드하고 스테이션과 거리에 대한 정보를 수신 한 다음 index.tmpl에 고정시키고 균형 잡힌 균형 잡힌 열을 작성합니다. 홈 핸들러는 또한 스테이션의 이름을 유지하고 알파벳순으로 분류합니다.
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의 위치 및 지점의 색상을 의미합니다. 조정 -이 스테이션에서 구동 될 수있는 스테이션, dist -fare to 그들과의 요금, 시프트 - X, Y. dx, dy와 관련된 텍스트는 X, Y에 따라 텍스트를 혼합합니다.
FindRouteHandler (Handlers/Handlers.go)는 index.tmpl 양식에서 두 줄을 읽고 적절한 스테이션을 찾습니다 (3 페이지 참조).
가장 짧은 방법은 알파벳 순서로 스테이션의 수를 수용하는 Dijkstra/dijkstra.go 알고리즘을 사용하는 것입니다.이 경로에 포함 된 스테이션의 수에서 최소 시간과 배열을 반환합니다.
예.
| 에서 | 에게 | 최고의 경로 | 지속 |
|---|---|---|---|
| 고르키 | Obvodny 채널 | Gorkovskaya, Nevsky, Avenue, Sennaya, Sadovaya, Zvenigorodskaya, Ombodny Canal | 18 분 |

Showrutehandler (Handlers/Handlers.go)는 메트로 카드를 구축하며, 가장 짧은 경로에 포함되지 않은 리브에 80%투명성 효과가 추가됩니다.
..* utils.entoru (들) - 선을 으깨고, 같은 키보드 클램프에있는 러시아인의 영어 편지로 선을 반환합니다.
..* getIdx- 스테이션의 모든 이름의 S 라인에 가장 "유사한"을 반환합니다. S1 라인은 S1과 S 사이의 Levenstein (utils.editdistance ())의 거리는 S2와 S보다 작은 경우 S2보다 라인 S와 비슷합니다.
상트 페테르부르크 지하철 시뮬레이터. *Yandex Metro 클론

핸들러/핸들러.go) asssts/stations.json 파일 마녀는 스테이션을 설명하고, 상태의 그래프를 작성하고 그 사이에 거리를 작성하고 그려 둡니다. 또한 홈 핸들러는 방송국 이름을 저장하고 알파벳 순서로 정렬합니다.
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 위치 및 분기의 색상을 나타냅니다. 조정은 이것과 연결되는 상태입니다. Dist- 도달 할 시간, 텍스트의 오프세이 쪽. DX, DY- X와 Y의 텍스트 전환.
FindRouteHandler (Handlers/Handlers.go)는 Index.tmpl Page의 양식에서 "To"에서 "To"에서 두 문자열을 읽고, Maan (p.3)을 찾아서 Searsch에서 가장 좋은 경로를 읽습니다.
dijkstra 알고리즘 (dijkstra/dijkstra.go) 두 노드 사이의 가장 짧은 경로를 반환합니다.

Showrutehandler (Handlers/Handlers.go)는 지하철지도를 빌드합니다. 가장자리는 가장 짧은 경로에 있지 않습니다.
getIdx- 가장 유사한 스테이션 이름을 s로 반환합니다. 문자열 S와 문자열 t 사이의 유사성은 S에서 T까지의 Levenshtein 거리는 두 문자열의 차이를 측정하기위한 문자열 메트릭입니다.