42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
|
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)
|