p1/05_nacrtovanje_poti/naloga.py

42 lines
1.1 KiB
Python
Raw Normal View History

2023-11-16 15:18:51 +00:00
def dvosmerni_zemljevid(zemljevid):
nov_zemljevid = {}
for (a, b), vescine in zemljevid.items():
nov_zemljevid[(a, b)] = nov_zemljevid[(b, a)] = set(vescine.split())
return nov_zemljevid
def mozna_pot(pot, zemljevid):
z = dvosmerni_zemljevid(zemljevid)
for k in zip(pot, pot[1:]):
if not z.__contains__(k):
return False
return True
def potrebne_vescine(pot, zemljevid):
z = dvosmerni_zemljevid(zemljevid)
vescine = set()
for k in zip(pot, pot[1:]):
vescine = vescine.union(set(z[k]))
return vescine
def nepotrebne_vescine(pot, zemljevid, vescine):
return vescine.difference(potrebne_vescine(pot, zemljevid))
def tocke_vescine(zemljevid, vescina):
z = dvosmerni_zemljevid(zemljevid)
tocke = set()
for k, v in z.items():
if v.__contains__(vescina):
tocke.add(k[0])
return "".join(sorted(tocke))
def koncna_tocka(pot, zemljevid, vescine):
z = dvosmerni_zemljevid(zemljevid)
for k in zip(pot, pot[1:]):
if not z[k].issubset(vescine):
return k[0], z[k].difference(vescine)