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)