from itertools import pairwise, groupby def nove_povezave(pot, zemljevid): return pairwise(pot) - zemljevid.keys() def obiskane_tocke(pot): return set(pot) def popravljena_pot(pot): return "".join(k for k, g in groupby(pot)) def povezave_z_vescino(pot, zemljevid, vescina): return [p for p in pairwise(pot) if vescina in zemljevid[p]] def dolgocasna_pot(pot, zemljevid): return set() in (zemljevid[p] for p in pairwise(pot)) def dobra_pot(pot, zemljevid): return not False in (len(zemljevid[p]) >= 2 for p in pairwise(pot)) def zahtevnost_poti(pot, zemljevid): return max(len(zemljevid[p]) for p in pairwise(pot)) def izvedljiva(pot, zemljevid, zivljenj): return sum(p not in zemljevid for p in pairwise(pot)) < zivljenj def enosmerne(zemljevid): return {p for p in zemljevid if not (p[1], p[0]) in zemljevid} def dvosmerne(zemljevid): return {k: v for k, v in zemljevid.items() if (k[1], k[0]) in zemljevid} def najzahtevnejsi_odsek(pot, zemljevid): return max((len(zemljevid[p]), p) for p in pairwise(pot))[1]