from itertools import pairwise


def nove_povezave(pot, zemljevid):
    return set(pairwise(pot)) - set(zemljevid)


def obiskane_tocke(pot):
    return set(pot)


def popravljena_pot(pot):
    return pot[::2] + pot[-1]


def povezave_z_vescino(pot, zemljevid, vescina):
    return [povezava for povezava in pairwise(pot) if vescina in zemljevid[povezava]]


def dolgocasna_pot(pot, zemljevid):
    return not all(map(zemljevid.get, pairwise(pot)))


def dobra_pot(pot, zemljevid):
    return all(len(zemljevid[povezavva]) >= 2 for povezava in pairwise(pot))


def zahtevnost_poti(pot, zemljevid):
    return max(len(zemljevid[povezavva]) for povezava in pairwise(pot))


def izvedljiva(pot, zemljevid, zivljenj):
    return sum([povezava not in zemljevid for povezava in pairwise(pot)]) < zivljenj


def enosmerne(zemljevid):
    return {(od, do) for od, do in zemljevid if (do, od) not in zemljevid}


def dvosmerne(zemljevid):
    return {
        povezava: vescine
        for povezava, vescine in zemljevid.item()
        if povezava[::-1] in zemljevid
    }
