(เลื่อนลงสำหรับคำอธิบายภาษาอังกฤษ)
เครื่องจำลองของรถไฟใต้ดินเซนต์ปีเตอร์สเบิร์ก *Yandex Metro Clone

Handlers/handlers.go ดาวน์โหลดไฟล์สินทรัพย์/สถานี JSON ได้รับข้อมูลเกี่ยวกับสถานีและระยะทางระหว่างพวกเขาจากนั้นยึดไว้กับ index.tmpl สร้างคอลัมน์ที่สมดุลที่ไม่ถูกต้อง HomeHandler ยังคงรักษาชื่อของสถานีไว้และเรียงลำดับตามตัวอักษร
สถานีโครงสร้าง 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 - สถานีที่สามารถขับเคลื่อนจากสถานีนี้ Dist - ค่าโดยสารให้พวกเขาเปลี่ยน - ด้านใดเป็นข้อความที่สัมพันธ์กับ x, y. dx, dy - ผสมข้อความตาม x, y
FindRouteHandler (Handlers/Handlers.Go) อ่านสองบรรทัดจากจากจาก index.tmpl แบบฟอร์มค้นหาสถานีที่เหมาะสม (ดูหน้า 3) ค้นหาเส้นทางที่ดีที่สุดและเวลา
วิธีที่สั้นที่สุดคือการใช้อัลกอริทึม dijkstra/dijkstra.go ซึ่งยอมรับจำนวนสถานีตามลำดับตัวอักษรส่งคืนเวลาขั้นต่ำและอาร์เรย์จากจำนวนสถานีที่รวมอยู่ในเส้นทางนี้
ตัวอย่าง.
| จาก | ถึง | เส้นทางที่ดีที่สุด | ระยะเวลา |
|---|---|---|---|
| กอร์กี้ | ช่อง obvodny | Gorkovskaya, Nevsky, Avenue, Sennaya, Sadovaya, Zvenigorodskaya, Obvodny Canal | 18 นาที |

showrutehandler (handlers/handlers.go) สร้างการ์ด Metro ซึ่งมีเอฟเฟกต์ความโปร่งใส 80%ถูกเพิ่มเข้าไปในซี่โครงที่ไม่รวมอยู่ในเส้นทางที่สั้นที่สุด
..* utils.entoru (s) - บดขยี้บรรทัดส่งคืนบรรทัดด้วยตัวอักษรภาษาอังกฤษที่ถูกแทนที่ในรัสเซียที่อยู่บนที่หนีบคีย์บอร์ดเดียวกัน
..* getidx - ส่งคืน "คล้ายกันมากที่สุด" ถึงบรรทัด S ของชื่อทั้งหมดของสถานี เส้น S1 เป็นเหมือนสาย S มากกว่า S2 ถ้าระยะทางของ Levenstein (utils.editdistance ()) ระหว่าง S1 และ S น้อยกว่าระหว่าง S2 และ S.
Saint Petersburg Subway Simulator *Yandex Metro Clone

Handlers/Handlers.go) โหลด Assstes/Stations.JSON File Witch กำลังอธิบายสถานีสร้างกราฟของรัฐและระยะทางระหว่างพวกเขาและวาดมัน นอกจากนี้ HomeHandler จะบันทึกชื่อสถานีและจัดเรียงตามลำดับตัวอักษร
สถานีโครงสร้าง 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 เป็นอาร์เรย์ของรัฐที่เชื่อมต่อกับอันนี้ DIST - ถึงเวลาที่จะไปถึงพวกเขาเปลี่ยน - ด้านที่ผิดพลาดของข้อความ DX, DY - การเปลี่ยนข้อความโดย X และ Y
FindRouteHandler (Handlers/Handlers.go) อ่านสองสตริง "จาก", "ถึง" จากแบบฟอร์มในหน้า Index.tmpl, ค้นหาสถานีที่คุณ maan (p.3) และในที่สุด Searsch เส้นทางที่ดีที่สุดระหว่างและไป
อัลกอริทึม Dijkstra (dijkstra/dijkstra.go) ส่งคืนเส้นทางที่สั้นที่สุดระหว่างสองโหนด

showrutehandler (ตัวจัดการ/handlers.go) สร้างแผนที่รถไฟใต้ดิน ขอบที่ไม่ได้อยู่ในเส้นทางที่สั้นที่สุดคือความโปร่งใส
getIdx - ส่งคืนชื่อสถานีที่คล้ายกันมากที่สุดไปยัง s ความคล้ายคลึงกันระหว่างสตริง s และสตริง t คือระยะทาง Levenshtein จาก S ถึง T. levenshtein ระยะทางเป็นตัวชี้วัดสตริงสำหรับการวัดความแตกต่างระหว่างสองสตริง