Commit 2061cc9a authored by Ing. Petr Pauš, Ph.D.'s avatar Ing. Petr Pauš, Ph.D.
Browse files

Update zadani 2

parent ccbc59b4
Loading
Loading
Loading
Loading
+7 −4
Original line number Original line Diff line number Diff line
@@ -3,8 +3,10 @@
## Úkoly
## Úkoly


1. Vytvořte třídu `Map`, která implementuje hledání nejkratší cesty v grafu pomocí Dijkstrova algoritmu.
1. Vytvořte třídu `Map`, která implementuje hledání nejkratší cesty v grafu pomocí Dijkstrova algoritmu.
2. Otestujte pomocí dodaných testerů (tzn. svůj kód pište přímo do dodaného souboru a následně zkuste spustit, dokud to neprojde bez chyb).
2. Otestujte pomocí dodaných testerů na malém grafu několika měst (tzn. svůj kód pište přímo do dodaného souboru a následně zkuste spustit, dokud to neprojde bez chyb).
3. Implementujte naplnění jiné mapy dodanými linkami tramvají a prověřte funkčnosti dodanými testery (v souboru až za seznamy stanic tram linek). 
3. Implementujte naplnění další mapy dodanými linkami tramvají a prověřte funkčnosti dodanými testery (v souboru až za seznamy stanic tram linek). 

*Zdrojový kód pro implementaci a testování*: link:route_zadani.py[route_zadani.py] zde na gitlabu.


## Třída `Map`
## Třída `Map`


@@ -31,7 +33,7 @@


- Vrátí dvojici `(dist, route)`, kde `dist` je hodnota nejkratší vzdálenosti mezi `start` a `end`
- Vrátí dvojici `(dist, route)`, kde `dist` je hodnota nejkratší vzdálenosti mezi `start` a `end`
  a `route` jen seznam (`list`) uzlů od `start` do `end` (včetně) tvořící nejkratší cestu (názvy uzlů vše malými písmeny).
  a `route` jen seznam (`list`) uzlů od `start` do `end` (včetně) tvořící nejkratší cestu (názvy uzlů vše malými písmeny).
- Pokud cesta neexistuje, vraťte `(None, [])`.
- Pokud cesta neexistuje, vraťte `(None, [])` (volitelné).
- Pokud `start` nebo `end` v mapě neexistuje, vyhoďte výjimku `ValueError` s vhodným textem.
- Pokud `start` nebo `end` v mapě neexistuje, vyhoďte výjimku `ValueError` s vhodným textem.


## Poznámky k implementaci třídy
## Poznámky k implementaci třídy
@@ -44,6 +46,7 @@ m = dict()
m["Praha"] = dict()
m["Praha"] = dict()
m["Praha"]["Brno"] = 200
m["Praha"]["Brno"] = 200
----
----
- Takto s tím můžete pracovat podobně jako s 2D polem, ale indexy jsou stringy.
- Při implementaci nepoužívejte žádné globální proměnné (vše, co budete používat, je třeba mít uvnitř třídy).
- Při implementaci nepoužívejte žádné globální proměnné (vše, co budete používat, je třeba mít uvnitř třídy).
- Při použití slovníků se může hodit metoda `.get()` (více v dokumentaci Pythonu).
- Při použití slovníků se může hodit metoda `.get()` (více v dokumentaci Pythonu).


@@ -58,7 +61,7 @@ m.add_single_connection("Petriny", "Vetrnik", 1)
m.add_single_connection("Vetrnik", "Vojenska nemocnice", 1)
m.add_single_connection("Vetrnik", "Vojenska nemocnice", 1)
----
----
- atd... Je to samozřejmě třeba udělat přes cykly a automaticky (ne to ručně zadávat v tomto formátu).
- atd... Je to samozřejmě třeba udělat přes cykly a automaticky (ne to ručně zadávat v tomto formátu).
- Pak zkuste projití následujících testů.
- Pak zkuste projití následch testů.


## Nastavení dodaného kódu
## Nastavení dodaného kódu