(Gulir ke bawah untuk deskripsi bahasa Inggris)
Simulator St. Petersburg Metro. *Yandex Metro Clone

Handlers/Handlers.go Mengunduh file aset/stasiun. Homehandler juga mempertahankan nama -nama stasiun dan menyortirnya secara abjad.
Struktur stasiun.json:
"st_g0" : {
"Name" : " Беговая " ,
"X" : 93 ,
"Y" : 140 ,
"Adj" : [ " st_g1 " ],
"Dist" : [ 4 ],
"Line" : " green " ,
"Shift" : " left " ,
"Dx" : 0 ,
"Dy" : 0
}Nama, x, y, garis berarti nama stasiun, posisi pada XY dan warna cabang, masing -masing. Adj - stasiun yang dapat didorong dari stasiun ini, dist - tarif ke mereka, bergeser - di sisi mana teks relatif terhadap x, y. dx, dy - mencampur teks sesuai dengan x, y.
FindRoutehandler (penangan/handlers.go) membaca dua baris dari dari, ke dari formulir index.tmpl, menemukan stasiun yang sesuai (lihat hal. 3), menemukan rute optimal dan waktunya.
Cara terpendek adalah menggunakan algoritma Dijkstra/Dijkstra.go, yang menerima jumlah stasiun dalam urutan abjad, mengembalikan waktu minimum dan array dari jumlah stasiun yang termasuk dalam jalur ini.
contoh.
| Dari | Ke | Rute terbaik | Lamanya |
|---|---|---|---|
| Gorky | Saluran Obvodny | Gorkovskaya, Nevsky, Avenue, Sennaya, Sadovaya, Zvenigorodskaya, Kanal Luar | 18 menit |

Showruthandler (penangan/penangan.go) membangun kartu metro, efek transparansi 80%ditambahkan ke tulang rusuk yang tidak termasuk dalam rute terpendek.
..* utils.entoru - menghancurkan garis, mengembalikan garis dengan huruf -huruf bahasa Inggris yang diganti dalam bahasa Rusia yang berada di klem keyboard yang sama.
..* getIdx - mengembalikan garis "serupa" dengan semua nama stasiun. Garis S1 lebih seperti garis S daripada S2 jika jarak Levenstein (utils.editdistance ()) antara S1 dan S kurang dari antara S2 dan S.
Simulator Subway Saint Petersburg. *Yandex Metro Clone

Penangan/penangan.go) memuat assstes/stasiun. File Witch menggambarkan stasiun, membangun grafik negara dan jarak di antara mereka dan menggambarnya. Juga Homehandler menyimpan nama stasiun dan mengurutkannya dalam urutan alfabet.
Struktur stasiun.json:
"st_g0" : {
"Name" : " Беговая " ,
"X" : 93 ,
"Y" : 140 ,
"Adj" : [ " st_g1 " ],
"Dist" : [ 4 ],
"Line" : " green " ,
"Shift" : " left " ,
"Dx" : 0 ,
"Dy" : 0
}Nama, x, y, garis singkatan dari nama stasiun, posisi xy dan warna cabang masing -masing. Adj adalah array negara yang terhubung dengan yang satu ini. Dist - waktu untuk mencapai mereka, menggeser - sisi offseet teks. DX, DY - Teks bergeser oleh X dan Y.
FindRoutehandler (penangan/handlers.go) membaca dua string "dari", "ke" dari formulir di halaman index.tmpl, temukan stasiun yang Anda maan (hal.3) dan, akhirnya, Searsch rute terbaik antara dan ke.
Algoritma Dijkstra (Dijkstra/Dijkstra.go) mengembalikan jalur terpendek antara dua node.

Showrutehandler (penangan/handlers.go) Membangun peta kereta bawah tanah. Tepi yang tidak berada di jalur terpendek arewing transparan.
GetIdx - mengembalikan nama stasiun yang paling mirip dengan s. Kesamaan antara string S dan string T adalah jarak levenshtein dari S ke T. levenshtein jarak adalah metrik string untuk mengukur perbedaan antara dua string.